当应用在后台时,杀死所有活动

时间:2014-10-08 12:29:20

标签: android android-activity back-stack

当我的应用程序进入后台并且我收到广播时,我的应用程序处于不一致状态,并且我想确保下次我的应用程序到达前台时,我启动Launcher(或root)活动。 为此,我有以下方法,

  1. 我的所有活动都来自基地。在基地恢复检查应用程序状态时。如果状态不一致,则启动Root活动。问题:应用程序恢复应该很快,检查状态是数据库调用。还有一个可见的翻转到Root活动,我想避免。

  2. 抓住广播接收器中的前台活动,清除任务并启动主要活动。 问题:我必须保持对所谓here所述的热门活动的引用。

  3. 当达到不一致状态时,在广播接收器中终止进程。
  4. 最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

您可以在AndroidManifest.xml中设置android:noHistory="true"

如果用户离开您的应用程序(它移动到后台),活动就会完成,因此您的应用程序将重新启动。

<小时/> 要仅在事件发生时启动root活动,请使用以下代码:

Intent intent = new Intent(context, yourRootActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);

这可确保完成所有旧活动,并且新启动的活动将成为新任务的“根活动”。 Source

答案 1 :(得分:0)

在您的主Activity中,您可以检查onCreate()中的状态,并继续启动您的主Activity,或者,如果您的状态命令如此,请立即调用您的主活动上的finish()并启动应启动的任何适当的活动。 / p>