在创建自己的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();
方法列表不是最终的,随意添加更多功能,我们应该知道,做什么。
对于那些感兴趣的人,应该在哪里 super.methodName
放置
Android Eclipse插件中super()调用的位置生成的代码是否可靠?
必须:
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);
实际上,当覆盖任何方法时,查看被覆盖类的源代码并查看该方法究竟是做什么是一个好习惯。
调用超级实现只是一个很好的做法。
但有些时候它是强制性的,比如“onCreate()”,否则在这种情况下会有一个“ActivityInstantiateingexcepetion”。
此外,有时您想在某些情况下覆盖超级实现,例如
onBackPressed(){
如果(myFlag){
//做我的东西
}
其他{
//按下背面的常用内容
super.onBackPressed();
}
所以这样一来,如果你的“myFlag”是真的,你的东西就会完成,否则正常的onBackpressed将被执行。
这一切 Activity
class method.In Java和Android如果你打电话 superclass
方法,你必须写 super.methodName
所有这些方法应该调用super.method()我想