如果在Android中不再可见,则由系统杀死的活动问题

Sri*_*san 5 android android-widget android-emulator android-intent android-layout

我的应用程序中有活动(A,B,C).当我启动应用程序活动A时:

  A:onCreate()
  A:onStart()
  A:onResume()
Run Code Online (Sandbox Code Playgroud)

使用intent我正在调用第二个活动(A - > B):

  A:onPause()
  B:onCreate()
  B:onStart()
  B:onResume()
  A:onStop()
Run Code Online (Sandbox Code Playgroud)

然后我点击"主页"按钮,然后应用程序转到后台:现在

  B:onPause()
  B:onStop()
Run Code Online (Sandbox Code Playgroud)

1或2小时后再次,我转到我的设备中的主页,然后单击它运行的应用程序图标,如:

 B:onDestroy()
 A:onRestart()
 A:onStart()
 A:onResume()
Run Code Online (Sandbox Code Playgroud)

但我需要去哪一个我退出的活动,

B:onRestart()
B:onStart()
B:onResume()
Run Code Online (Sandbox Code Playgroud)

我已经阅读了一些文章,它说的是由于不再可见而被系统杀死的活动.是否有任何可能解决我的问题......

提前致谢...

Dav*_*ser 7

你可能会在这里混淆两件不同的事情:

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

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

您想要做的是阻止Android在情况#2中清除任务.你可以通过添加来实现

    android:alwaysRetainTaskState="true"
Run Code Online (Sandbox Code Playgroud)

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