覆盖功能的Android Activity必须调用super.*

Mar*_*era 11 java android overriding android-activity

在创建自己的Activity子类时,我们将覆盖一些基本的Activity生命周期函数.

在哪些方面我们必须称之为超级实施,我们应该在哪里以及哪里只有好的方式

// base lifecycle
onCreate(Bundle savedInstanceState);
onStart();
onRestart();
onResume();
onPause();
onStop();
onDestroy();
finalize();
onUserLeaveHint();
// instance state
onSaveInstanceState(Bundle outState);
onRestoreInstanceState(Bundle savedInstanceState)
// others
onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo);
onCreateOptionsMenu(Menu menu);
onOptionsItemSelected(MenuItem item);
onContextItemSelected(MenuItem item);
onMenuItemSelected(int featureId, MenuItem item);
onActivityResult(int requestCode, int resultCode, Intent data);
onBackPressed();
Run Code Online (Sandbox Code Playgroud)

方法列表不是最终的,随意添加更多功能,我们应该知道,做什么.


对于那些感兴趣的人,应该在哪里super.methodName放置
Android Eclipse插件中的super()调用的位置生成的代码可靠吗?

a.c*_*ch. 6

必须:

  • onCreate(Bundle savedInstanceState);
  • onStart();
  • onRestart();
  • onResume();
  • onPause();
  • onStop();
  • onDestroy();
  • onPostCreate(Bundle savedInstanceState);
  • onPostResume();

应该/不应该:( 可能有助于调用超类方法,除非你管理活动的状态或故意改变活动的行为 - 在这种情况下它可能是有害的)

  • onSaveInstanceState(Bundle savedInstanceState);
  • onRestoreInstanceState(Bundle savedInstanceState);
  • onBackPressed();
  • onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo);
  • onCreateOptionsMenu(Menu menu);
  • onOptionsItemSelected(MenuItem item);
  • onContextItemSelected(MenuItem item);
  • onMenuItemSelected(int featureId, MenuItem item);

实际上,当覆盖任何方法时,查看重写类的源代码并查看此方法的确切功能是一种很好的做法.