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

标签 android android-intent android-launcher

我创建了一个 Android 启动器应用程序,它具有主页按钮功能,可以让您离开启动器并转到标准的 Android 主屏幕。我使用以下代码 fragment 执行此操作:

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

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

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

对于那些询问 list 的人,这些是创建启动器的步骤

1) 我在 Activity 中添加了以下属性

android:launchMode="singleTask"

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

<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

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

一般来说,LAUNCHER Activity 有launchMode="singleInstance"。这意味着当 LAUNCHER 启动一个 Activity 时,该 Activity 将在另一个任务中结束。 LAUNCHER Activity 始终在一个任务中。这样您就可以始终将 LAUNCHER Activity 置于前台(因为它的任务中没有其他 Activity )。

您可能需要重新考虑您的架构。对不起。

关于android - 在启动器应用程序上返回应用程序时保持状态::Android?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26045476/

相关文章:

java - Android 启动器 - 主页按钮

android - 离线 map OSM

java - 无法手动更改按钮的颜色

android - 将 Zxing 条码扫描器与我的 Android 应用程序集成 - 自定义操作名称问题

android - 在我传递给另一个 Intent Android 后 Intents 是否被杀死

android - 在 Android 上获取正确的启动器图标大小

android - 检测背景壁纸是否太亮或太暗

java - 将 Android Studio 升级到 4.0 后,我得到 'Caused by: java.lang.IllegalStateException: Unexpected non-class file'

java - android: TimePickerDialog 阻止用户选择过去的时间并且可以选择带有新日期的 future 时间

android 网页链接的两个按钮