让我们说应用程序正在运行,活动B位于堆栈顶部,活动A是具有清单中定义的启动意图的活动。然后我的应用程序进入后台(不可见),系统暂时杀死我的应用程序并重新启动它。
此时系统首先启动哪个活动,活动A(清单中定义的启动意图)或活动B?
此外,如果应用程序暂时被杀死,那么它会立即重启,还是可能已经死了一段时间?
我的应用程序有很多动态状态,它也会登录到服务器,因此当应用程序暂时被杀死时,我的应用程序状态可能会在此期间发生变化,重新启动时我将再次启动我的应用程序应用程序并重新登录并再次更新其所有状态。有什么办法可以避免吗?
感谢。
答案 0 :(得分:0)
当然,如果应用程序被杀死,那么它应该从启动活动开始。如果有登录选项,那么你也应该记住我的选项,这样如果app被杀,你就会得到应用程序的状态并执行自动登录,如果记住我已设置,否则只需启动应用程序登录过程。
答案 1 :(得分:0)
我不同意@Keshav所说的。我认为最后销毁的Activity是重新创建并向用户显示的内容。我根据设备配置发生变化时发生的情况来确定我的信念 - 当前活动实际上已经被破坏,同时重新创建它并且它不是第一个被启动的活动。
至于你应该做什么,当你的应用程序在后台被终止或销毁时的准则,你必须参考: http://developer.android.com/guide/components/activities.html#SavingActivityState
答案 2 :(得分:0)
您写道:
让我们说一个应用程序正在运行,活动B位于顶部 堆栈和活动A是具有启动意图的活动 在清单中定义。然后我的应用程序进入后台(不是 可见),系统暂时杀死我的应用程序并带来它 再次回来。
发生以下情况:
Application
对象已实例化,并在其上调用onCreate()
ActivityB
(任务堆栈上的顶级活动)的实例,并在其上调用onCreate()
您的根活动(ActivityA
)仅在({if} ActivityB
结束时(已完成或用户按下BACK按钮)实例化。
您无法阻止Android在后台处理您的应用。但是,您可以确定已发生这种情况并做出相应的反应。最简单的方法是在根活动或自定义Application
类中创建静态成员变量*,在创建根活动并设置为初始化时将其设置为true
。在onCreate()
的{{1}}中,检查此变量是否设置为ActivityB
。如果没有,您的应用程序已重新启动,因此您现在可以做出反应。例如,您可以将用户重定向回根活动,并从头开始强制启动应用程序。或者,您可以告诉用户在重新初始化应用程序等时等待。