2015-01-05 112 views
1

当我处于子活动中时,任务杀手会杀死应用程序,如果我重新启动应用程序,它会从子活动和崩溃开始。 如何在应用程序重新启动时从根活动开始而不是从子活动开始?如何在应用程序重新启动时从根活动开始,而不是从子活动开始?

+0

请尽量阅读清单文件,并检查您使用<意图过滤器> <操作机器人:名字=“机器人.intent.action.MAIN“/> 在您的根活动标签内。 – Srinivasan

+0

我已经这样做了。 – user3152056

回答

1

要做到这一点,最简单的办法就是

android:clearTaskOnLaunch="true" 

添加到activity定义清单为你的“根”活动(ACTION = MAIN和CATEGORY = DEFAULT)。

但是,如果用户离开它然后返回到它(即使Android没有终止您的应用程序的进程),它将始终从头开始您的应用程序。

执行此操作的更复杂的方法是使用public static boolean变量,该变量设置为您的“根”活动的onCreate()中的true。如果这个变量是true,那意味着你的“根”活动已经开始。然后,您需要在所有其他活动的onCreate()中测试此标志,如果该变量为false这意味着Android会终止您的流程并重新创建它并启动另一个活动(而不是“根”活动)。在这种情况下,你应该回重定向到你的“根”的活动是这样的:

Intent intent = new Intent(this, MyRootActivity.class); 
startActivity(intent); 
finish(); 
return; 
+0

我没有尝试,因为我发现崩溃的原因。但我认为第二种方法是有效的。 – user3152056

-2

这可能会实现: 在你的子活动的的onStop和的onDestroy,把下面的代码

Intent intent = getIntent(); 
intent = null; 
+0

此答案无用。当应用程序进程被终止时,它被终止。它不再存在。 'onStop()'和'onDestroy()'不会被调用。当用户再次启动应用程序时,Android会记住哪个活动处于顶部并重新启动该活动。这是正常的,你的答案不会改变这一点。 –

+0

@DavidWasser:David android重新启动该活动,但它以相同的意图重新启动活动。这就是为什么我认为这可以工作。是的,你可能是对的onDestroy可能不会被调用,所以写这两行的位置可能不同,这就是我的想法。如果你可以在android杀死一个活动时分享生命周期的更多细节。 – theJango

+0

当你像这样调用'getIntent()'时,它将一个名为'intent'的局部变量设置为对'Intent'的引用。然后,您将此局部变量设置为null。你认为这将完成什么? –