在启动器应用程序上返回应用程序时保持状态::Android



我创建了一个Android启动器应用程序,该应用程序具有Home按钮功能,可以将您从启动器中带到标准的Android主屏幕。我用以下代码狙击手做到这一点:

Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);

我遇到的问题是,当用户重新启动启动器应用程序时,它会从头开始。我不会返回到我启动的同一个"活动"。我的怀疑是,这是因为该应用程序是一个启动器,所以它的行为与"活动"进入后台并可以返回的普通应用程序不同。相反,它的行为是完成堆栈任务中的所有活动。

有什么预防或解决这一问题的建议吗?

对于那些询问清单的人来说,以下是创建启动器的步骤

1) 我为活动添加了以下属性

android:launchMode="singleTask"

2) 我在意向过滤器中添加了以下类别

<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.HOME" />

最后,我创建了一个演示,演示了我正在描述的问题。此处:www.mediafire.com/download/qu5nfzoaj8cqjtu/LauncherDemo.zip

我看过您的演示。不幸的是,这不起作用。

当Android启动LAUNCHER时,它会设置以下Intent标志:

FLAG_ACTIVITY_RESET_TASK_IF_NEEDED

这将导致任务被剥离为根活动。您无法控制启动LAUNCHER活动时设置的Intent标志,因此无法防止这种情况发生。

通常,Launchher活动具有launchMode="singleInstance"。这意味着,当LAUNCHER启动一个"活动"时,该"活动"将进入另一个任务。Launchher活动始终处于一项单独的任务中。这样,您就可以始终将LAUNCHER活动置于前台(因为它的任务中没有其他活动)。

您可能需要重新思考您的体系结构。很抱歉

最新更新