如果活动堆栈为空,则启动主要活动

我有一个活动,可以从其他几个活动,以及URLfilter意图启动。

在此活动中,我使用操作栏中的主页图标作为后退button,使用户回到以前的活动(而不是“主页”操作)。 现在我通过调用finish()函数来做到这一点。 从应用程序内部工作时,这工作正常。

但是,如果通过urlfilter意图启动活动,我想让home图标将用户带到主要活动。 显然,调用finish()将会closures活动。

所以我的问题是,有没有办法来检查我的应用程序堆栈是否是空的,然后启动主要活力? 还是我攻击这个错误的方式?

Solutions Collecting From Web of "如果活动堆栈为空,则启动主要活动"

如果你的应用程序是通过URL意图filter启动,并创build自己的任务,那么你可以使用

if (isTaskRoot()) { // This activity is at root of task, so launch main activity } else { // This activity isn't at root of task, so just finish() } 

编辑:增加了另一种可能的方法

如果您的应用程序在通过URL意图filter启动时启动到现有任务中,则可以执行以下操作:

当您从您的应用程序中的其他活动启动您的活动时,像这样添加一个额外的意图:

 Intent intent = new Intent(this, MyActivity.class); intent.putExtra("internal", "true"); startActivity(intent); 

当你的活动被启动时,它可以检查Intent中是否存在EXTRA,以确定它是内部启动还是通过URL意图filter启动,如下所示:

 Intent intent = getIntent(); if (intent.hasExtra("internal")) { // Launched internally } else { // Launched via intent-filter }