2013-12-10 47 views
0

比方说,一个应用程序与活动B运行在栈中和活性的顶部是在清单中定义的推出意图的活动。然后我的应用程序在后台(不可见),系统暂时杀死我的应用程序,并将其重新启动。如何处理应用程序暂时地被杀害,然后重新启动

在这一点上,其活动是否为系统带来了第一,活性的(在清单中定义发射意图)或活性乙?

此外,如果应用程序是暂时地被杀害,然后它重新启动的时候了,也可能一会儿是死了吗?

我的应用程序有很多的动态状态,它也登录到服务器,所以当应用程序被暂时杀死,那么我的应用程序的状态可以在这段时间内改变,当它重新启动时,我将再次启动我的应用程序并重新登录并再次更新其所有状态。有什么办法可以避免吗?

谢谢。

回答

0

当然,如果应用程序被杀死,那么它应该从启动活动开始。如果有登录选项,那么你也应该记住我的选择,以便如果应用程序被杀害,你得到的应用程序状态,并执行自动登录,如果记住我设置,否则只需启动应用程序与登录过程。

0

我乞求与@Keshav所说的不同。我认为最后销毁的活动是重新创建并向用户展示的活动。我基于当设备配置发生变化时会发生什么的信念 - 当前活动实际上被销毁,同样被重新创建,并且它不是第一个启动的活动。

至于你应该做的,当你的应用程序被终止或破坏,而它在后台的规定,您必须参考: http://developer.android.com/guide/components/activities.html#SavingActivityState

+0

我的问题是当应用程序被杀害,而不仅仅是一个活动。此外,我无法保存我的状态并将其恢复,因为在我的活动结束后,我的状态已发生变化,我无法恢复旧保存的状态。 –

+0

当应用程序被终止时,整个任务被终止。任务是一组活动并具有与其关联的后备堆栈。因此,如果整个任务被终止,并且用户或系统再次启动应用程序,那么将创建一个新任务(没有活动在后备栈中),然后@keshav所说的将是真实的。有关http://developer.android.com/guide/components/tasks-and-back-stack.html上任务的更多信息 –

0

您写道:

比方说,一个应用程序正在运行,活动B位于 堆栈的顶部,活动A是清单中定义的启动意向 的活动。然后我的应用程序在后台进行(不可见 ),系统暂时终止我的应用程序,并将其重新备份为 。

会出现以下情况:您的应用程序创建

  1. 新工艺
  2. Application对象实例化和onCreate()被称为它
  3. ActivityB(顶部活动的一个实例上任务堆栈)被实例化并onCreate()被称为它

只有当(如果)ActivityB结束时(完成或用户按BACK按钮),才会实例化您的根活动(ActivityA)。

您无法阻止Android在后台处理应用时将其杀死。但是,您可以确定发生了这种情况并作出了相应的反应。执行此操作的最简单方法是在根活动或自定义Application类中有一个静态成员变量*,当您创建根活动并执行其初始化时,您将其设置为true。在ActivityBonCreate()中,检查该变量是否设置为true。如果不是,你的应用程序已经重新启动,所以你现在可以做出反应。例如,您可以将用户重定向回根活动,并从头开始强制启动应用程序。或者你可以让用户等待,而你重新初始化你的应用程序等。

相关问题