繁体   English   中英

为什么在切换到另一个应用程序时调用 onDestroy()

[英]why is onDestroy() called when switching to another app

好的,我已经阅读了有关 Activity 生命周期部分,但仍有一些我不明白的地方。 为什么在我的应用程序中调用onDestroy() ,当我切换到手机上运行的另一个应用程序时,或者当我点击主页按钮时。

从我读到的,当应用程序失去焦点时会调用onPause()

系统调用此方法作为用户离开您的活动的第一个指示(尽管这并不总是意味着活动正在被销毁); 它表明活动不再在前台(尽管如果用户处于多窗口模式它可能仍然可见)。 使用 onPause() 方法暂停或调整在 Activity 处于暂停状态时不应继续(或应适度继续)的操作,并且您希望很快恢复。

OnStop()我也得到:

当您的 Activity 不再对用户可见时,它就进入了 Stopped 状态,系统会调用 onStop() 回调。 例如,当新启动的活动覆盖整个屏幕时,可能会发生这种情况。 当 Activity 已完成运行并且即将终止时,系统也可能会调用 onStop()。

但是,我不明白为什么onDestroy()也会被调用。

onDestroy() 在活动被销毁之前被调用。 系统调用此回调的原因可能是:1) 活动正在完成(由于用户完全关闭活动或由于在活动上调用了 finish()),或 2) 由于配置,系统正在临时销毁活动更改(例如设备旋转或多窗口模式)。

首先,我没有完成我的应用程序,也没有调用finish() 其次,我知道没有配置更改。

希望有人能帮忙。

仅供参考:我的应用程序扩展Activity ,使用多个Threads ,有一个扩展SurfaceView并实现SurfaceHolder.Callback ,使用IntentServiceContentProvider 除此之外,没有什么特别的。

PS:当我关闭屏幕时,不会调用onDestroy()

PPS:我不是在寻找有异味的解决方法。 我想了解正在发生的事情以及原因。

事实证明,我在清单中使用了android:noHistory标志。 感谢这篇文章,我能够解决我的问题。 谢谢@Alexis Contour!

我不确定这会有所帮助,但据我所知,当 Android 内存不足时,它会自动运行屏幕上不可见的任何 Activity 的 onDestory 方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM