Android 在没有调用finish()的情况下调用onDestroy
我们构建了一个Android启动器,在onDestroy()和finish()中有一些奇怪的行为。根据和,Android 在没有调用finish()的情况下调用onDestroy,android,activity-finish,ondestroy,Android,Activity Finish,Ondestroy,我们构建了一个Android启动器,在onDestroy()和finish()中有一些奇怪的行为。根据和,isFinishing()只有在对活动调用finish()时才应为true。但是,虽然从未对MainActivity调用finish(),但在MainActivity的onDestroy()方法中isFinishing()为true 创建MainActivity后的第一次,当用户通过Play Store安装或卸载应用程序时,在退出Play Store后调用MainActivity的onDes
isFinishing()
只有在对活动调用finish()时才应为true。但是,虽然从未对MainActivity调用finish(),但在MainActivity的onDestroy()方法中isFinishing()为true
创建MainActivity后的第一次,当用户通过Play Store安装或卸载应用程序时,在退出Play Store后调用MainActivity的onDestroy()。这只会在第一次执行时发生,然后按预期调用onResume()方法,而不会重新创建MainActivity
我正在检查isFinished()是否按如下方式调用:
@Override
public void finish() {
// (Never called)
super.finish();
Log.i(TAG, "Finish called. " + isFinishing());
}
@Override
public void onStop() {
super.onStop();
// When opening the Play Store app, isFinishing is false here
Log.i(TAG, "onStop called. Finishing: " + isFinishing());
}
@Override
public void onDestroy() {
super.onDestroy();
// When exiting the Play Store app (opening our Launcher), isFinishing is true the first time,
// after that onDestroy isn't called anymore.
Log.i(TAG, "onDestroy called. Finishing: " + isFinishing());
}
有人知道为什么在安装/卸载应用程序后第一次调用onDestroy吗?
谢谢 文档中明确指出:检查此活动是否正在完成,或者是因为您对其调用了finish(),或者是其他人要求它完成。事实上,我也阅读了文档。但是在这种情况下,不会对main活动调用finish()吗?因为从来没有人打过电话。对于我的活动,还有什么其他流程可以称为“完成”?可能是Play Store应用程序吗?该框架可能会在其认为必要时破坏活动。它不需要调用finish()。文件中的语言模棱两可;它没有明确说明必须有人调用finish()。好的,有人是框架,并且“请求它完成”并不意味着它必须对活动调用finish()。再想想,有人可能是任何可以请求框架终止其他进程的应用程序。谢谢,这很有帮助。我查过了,好像是这样的。不知道为什么,但我会调查的。