我创建了一个具有主屏幕按钮功能的Android启动器应用程序,它将带您离开启动器并进入标准的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标志没有任何控制权,因此您无法阻止这种情况的发生。
一般而言,发射器活动具有launchMode="singleInstance"
。这意味着,当启动器启动活动时,该活动将结束另一个任务。LAUNCHER活动始终独自完成一项任务。这样一来,您就可以始终将LAUNCHER活动置于前台(因为它的任务中没有其他活动)。
您可能需要重新考虑您的体系结构。对不起。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句