如果在Android中不再可见,则系统会终止活动



我的应用程序中有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()

我读过一些文章,上面说,由于不再可见,该活动被系统杀死。有什么可能解决我的问题吗。。。

提前感谢。。。

您可能会混淆两个不同的东西:

  1. 如果活动需要内存,Android不会杀死它。它的作用是杀死活动运行的整个进程。一般来说,这意味着在这种情况下,Android会杀死所有活动。然而,它会记住活动堆栈,当用户返回应用程序时,Android将创建一个新流程,然后重新创建每个活动(根据需要依次创建)。它首先重新创建活动堆栈顶部的活动(即:用户离开应用程序的位置)。

  2. Android假设,如果用户离开任务很长一段时间(我认为这大约是30分钟),那么他对该任务不再感兴趣,也没有必要记住用户在该任务的活动堆栈中的位置,因为他可能不再在乎了。在这种情况下,当用户返回任务(或重新启动该任务中活动堆栈顶部的应用程序)时,Android只需将任务清除回根活动。这会产生这样的效果,即看起来应用程序正在重新启动。这是所期望的(并记录在案的行为)。

你想做的是阻止安卓系统在2号位置清除任务。你可以添加

    android:alwaysRetainTaskState="true"

根活动<activity>标记(即:启动应用程序的活动,具有ACTION_MAINCATEGORY_LAUNCHER的活动)。

我不相信这是你一定能控制的。如果你的活动长时间处于后台,而其他应用程序需要内存,系统会终止你的活动以释放内存。

最新更新