问题与活动,如果不再显示在Android的
我有没有被系统终止活动(A,B,C)我Application.When i内启动应用程序 活动答:问题与活动,如果不再显示在Android的
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()
我看了一些文章,它说这样的活动由因为不再visible.Is有任何可能的系统杀死解决我的问题...提前
谢谢...
您可以在这里混淆了两个不同的东西:如果它需要的内存
Android不杀死一个活动。它所做的是杀死整个活动正在运行的进程。通常,这意味着Android在这种情况下会杀死所有您的活动。但是,它会记住活动堆栈以及用户何时返回到应用程序,Android将创建一个新进程,然后重新创建每个活动(依需要进行)。它首先重新创建活动堆栈顶部的活动(即:用户离开应用程序的位置)。
Android的假设是,如果用户离开任务为很长一段时间(我认为这是一样的东西30分钟),那么他就不再感兴趣的是任务,没有一点回忆当时在用户处于该任务的活动堆栈中,因为他可能不在乎了。在这种情况下,当用户返回任务(或重新启动该任务中活动堆栈顶部的应用程序)时,Android会简单地将清除回到根活动。这有一个效果,看起来应用程序是从头再来。这是所需的(并且记录下来的行为)。
你想要做的是阻止Android清除situarion#2中的任务。您可以通过添加
android:alwaysRetainTaskState="true"
到根系活力(:启动应用程序时,一个与ACTION_MAIN
和CATEGORY_LAUNCHER
活动IE)的<activity>
标签做到这一点。
哦,非常感谢你为你的整洁的解释大卫.... – Srinivasan 2012-07-27 05:15:42
我不相信这是你可以控制的东西。如果您的活动处于后台很长时间,同时其他应用程序需要内存,则系统将终止您的活动以释放内存。
是的,我知道安迪,但我的客户的要求是应该重新启动哪一个我退出...但一些应用程序保持这样我不知道如何? – Srinivasan 2012-07-26 08:46:31
然后我相信你应该考虑做一个自定义的实现。例如,每次打开活动B时,都会在onCreate()中写入SharedPreferences中的标志,并在onDestroy()上删除该标志。 现在当活动A开始时,请检查该标志的SharedPreferences。如果标志被设置,这意味着活动B被打开,但是系统杀死了她(因为id没有通过onDestroy()来通过删除该标志),因此,从那里将用户重定向到活动B.如果没有设置标志,则什么也不做。这是一个想法... – 2012-07-26 08:55:10
但是,这也是从第二个Activity的onCreate(),所以它不会保留任何值。 – Srinivasan 2012-07-26 09:30:56
你可以发布你的活动A和B的代码吗? – Dharmendra 2012-07-26 11:37:29