Hem*_*mar 20 android android-lifecycle android-activity
几天前,我被要求写下调用ondestroy()的场景,而不调用onpause()或onstop().可能吗.如果是,请解释.
AAD*_*ing 22
如果你尝试下面的代码,你会发现那里的情况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");
}
Run Code Online (Sandbox Code Playgroud)
因此,如果您调用finish(),一旦创建了Activity,系统将onDestroy()直接调用.
如果从 onCreate() 方法中调用了 Finish(),则不会调用 onPause() 和 onStop()。例如,如果您在 onCreate() 期间检测到错误并因此调用 finish() ,则可能会发生这种情况。但是,在这种情况下,您希望在 onPause() 和 onStop() 中完成的任何清理都不会执行。
虽然 onDestroy() 是一个 Activity 生命周期中的最后一个回调,但值得一提的是,这个回调可能不会总是被调用,也不应该依赖它来销毁资源。在某些情况下,系统将简单地终止活动的托管进程,而不会在其中调用此方法(或任何其他方法),因此不应使用它来执行在进程消失后打算保留的事情。最好有在 onStart() 和 onResume() 中创建的资源,并分别在 onStop() 和 onPause 中销毁它们。
参考 - https://www.toptal.com/android/interview-questions
| 归档时间: |
|
| 查看次数: |
13004 次 |
| 最近记录: |