我的应用程序中有There Activities(A、B、C)。当我启动应用程序时活动A:
A:onCreate()
A:onStart()
A:onResume()
使用意图,我调用第二个活动(A->B):
A:onPause()
B:onCreate()
B:onStart()
B:onResume()
A:onStop()
然后我点击"主页"按钮,应用程序进入后台:现在
B:onPause()
B:onStop()
1或2小时后,我再次进入设备内的主页,点击应用程序图标,它运行方式如下:
B:onDestroy()
A:onRestart()
A:onStart()
A:onResume()
但我需要去哪一个活动我这样退出,
B:onRestart()
B:onStart()
B:onResume()
我读过一些文章,上面说,由于不再可见,该活动被系统杀死。有什么可能解决我的问题吗。。。
提前感谢。。。
您可能会混淆两个不同的东西:
-
如果活动需要内存,Android不会杀死它。它的作用是杀死活动运行的整个进程。一般来说,这意味着在这种情况下,Android会杀死所有活动。然而,它会记住活动堆栈,当用户返回应用程序时,Android将创建一个新流程,然后重新创建每个活动(根据需要依次创建)。它首先重新创建活动堆栈顶部的活动(即:用户离开应用程序的位置)。
-
Android假设,如果用户离开任务很长一段时间(我认为这大约是30分钟),那么他对该任务不再感兴趣,也没有必要记住用户在该任务的活动堆栈中的位置,因为他可能不再在乎了。在这种情况下,当用户返回任务(或重新启动该任务中活动堆栈顶部的应用程序)时,Android只需将任务清除回根活动。这会产生这样的效果,即看起来应用程序正在重新启动。这是所期望的(并记录在案的行为)。
你想做的是阻止安卓系统在2号位置清除任务。你可以添加
android:alwaysRetainTaskState="true"
到根活动的<activity>
标记(即:启动应用程序的活动,具有ACTION_MAIN
和CATEGORY_LAUNCHER
的活动)。
我不相信这是你一定能控制的。如果你的活动长时间处于后台,而其他应用程序需要内存,系统会终止你的活动以释放内存。