好的,我已经读过section on the activity lifecycle,但有些东西还是没听懂。当我切换到手机上运行的另一个应用程序时,或者当我按下主页按钮时,为什么会在我的应用程序中调用onDestroy()
。
根据我的阅读,当应用失去焦点时,就会调用onPause()
。
系统调用此方法作为用户离开活动的第一个指示(尽管并不总是意味着活动已被破坏);它表示活动不再在前台(尽管如果用户处于多窗口模式,则仍然可以看到活动)。使用onPause()方法可以暂停或调整在“活动”处于“暂停”状态时不应继续(或应继续适度进行)的操作,并且您希望不久后可以恢复操作。
OnStop()
我也明白:
当用户不再看到您的活动时,该活动已进入“已停止”状态,并且系统调用onStop()回调。例如,当新启动的活动覆盖整个屏幕时,可能会发生这种情况。活动完成运行并即将终止时,系统还可以调用onStop()。
但是,我不明白,为什么onDestroy()
也被调用。
在活动被销毁之前,onDestroy()被调用。系统调用此回调的原因如下:1)活动正在完成(由于用户完全取消了活动或由于在活动上调用了finish()),或2)系统由于配置而暂时破坏了活动更改(例如设备旋转或多窗口模式)。
首先,我没有完成我的应用程序,也没有打电话给finish()
。其次,我不知道任何配置更改。
希望有人可以提供帮助。
仅供参考::我的应用程序扩展了Activity
,使用了多个Threads
,有一个扩展了SurfaceView
并实现了SurfaceHolder.Callback
的类,使用了{ {1}}和一个IntentService
。除此之外,没什么特别的。
PS::当我关闭屏幕时,不会调用ContentProvider
。
PPS::我不是在寻找解决方法。我想了解发生了什么以及为什么。
答案 0 :(得分:1)
事实证明,我在清单中使用了android:noHistory
标志。谢谢
this帖子,我能够解决我的问题。谢谢@Alexis Contour!
答案 1 :(得分:0)
我不确定这是否有帮助,但是据我所知,当Android内存不足时,它将自动运行屏幕上不可见的任何Activity的onDestory方法。