最近我被要求写下一些场景,其中ondestroy()方法被调用时没有调用onpause()或onstop()方法。这种情况是否可能发生?如果是,请解释一下。
如果您尝试以下代码,您会发现一种情况,onDestroy()
确实被调用,而onPause()
和onStop()
生命周期回调被跳过。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
finish();
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Log.e("MainActivity", "onDestroy");
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
Log.e("MainActivity", "onPause");
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
Log.e("MainActivity", "onStop");
}
换言之,如果在onCreate()
中创建Activity时调用finish()
,系统将直接调用onDestroy()
。this.finish();
。当我们在一个活动中直接调用finish()时,这是可能的。 当在一个活动中调用finish()时,onDestroy()会被执行,并执行以下操作:
当Activity B从Activity A调用时 然后 . A onCreate . A onStart . A onResume . A onPause . B onCreate . B onStart . B onResume . A onStop 2. 返回按钮按下 . OnCreate . OnStart . OnResume . OnPause . OnStop . OnDestroy 3. 在电话呼叫时 . onCreate . OnStart . OnResume . OnPause . OnStop
4.在onCreate中调用finish会发生什么? -> 创建后立即调用OnDestroy