0

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

根据我的阅读,onPause()当应用程序失去焦点时被调用。

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

OnStop()我也得到:

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

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

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

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

希望有人可以提供帮助。

仅供参考:我的应用程序 extends Activity,使用 multiple Threads,有一个扩展SurfaceView和实现的类SurfaceHolder.Callback,使用 anIntentService和 a ContentProvider。除此之外,没有什么特别的。

PS:当我关掉屏幕的时候,onDestroy()是不会调用的。

PPS:我不是在寻找一个臭的解决方法。我想了解发生了什么以及为什么。

4

2 回答 2

2

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

于 2018-09-23T09:42:53.447 回答
0

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

于 2018-09-22T12:17:29.830 回答