我创建了一个Android启动器应用程序,该应用程序具有主页按钮功能,可以将您带出启动器和标准Android主屏幕。我使用以下代码snipet执行此操作:
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
答案 0 :(得分:1)
我看了你的演示。不幸的是,这无法奏效。
当Android启动LAUNCHER时,它会设置以下Intent标志:
FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
这会导致任务被剥离到根活动。您无法控制启动LAUNCHER活动时设置的Intent标志,因此您无法阻止这种情况发生。
一般来说,LAUNCHER活动有launchMode="singleInstance"
。这意味着当LAUNCHER启动一个Activity时,该Activity将在另一个任务中结束。 LAUNCHER活动始终是一项任务。这样您就可以始终将LAUNCHER活动置于前台(因为它的任务中没有其他活动)。
您可能需要重新考虑您的架构。遗憾。