android - 从任务管理器输入时,Intent 的参数始终保持不变

标签 android android-intent android-activity

我使用快捷方式启动带有操作和参数的 Activity 。

    fun makeShortcut(id: String, @StringRes shortLabel: Int, @StringRes longLabel: Int,
                         @DrawableRes icon: Int, action: String, cmd: String): ShortcutInfo {

            return ShortcutInfo.Builder(context(), id)
                    .setShortLabel(context().getString(shortLabel))
                    .setLongLabel(context().getString(longLabel))
                    .setIcon(Icon.createWithResource(context(), icon))
                    .setIntents(arrayOf(
                            Intent(action).putExtra(KEY_CMD, cmd)
                    ))
                    .build()
        }

开始 Activity 后,我做了一些事情并完成了 Activity 。 我从任务管理器启动 Activity 。 KEY_CMD 传递的值仍然存在。当 Activity 从任务管理器进入时,我想清除这些值。

最佳答案

这可能是 Android 的错误或功能,具体取决于您期望的工作方式。对你来说,它显然更像是一个错误而不是一个功能。看我类似问题的详分割析here

要解决您的问题,您可以尝试创建一个 <activity-alias>您用于快捷方式的。 <activity-alias>指向相同的 <activity>您用作主要启动器,但您可以指定不同的标志和行为。如果指定 android:excludeFromRecents="true"<activity-alias>并使用 <activity-alias>在您的快捷方式中,这应该可以解决您的问题。

如果您的整个应用程序只包含一个 Activity , 那么您可以通过添加 android:excludeFromRecents="true" 轻松解决您的问题为你的 Activity在 list 中(在这种情况下,您不需要 <activity-alias> )。

关于android - 从任务管理器输入时,Intent 的参数始终保持不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54069017/

相关文章:

android - 更改 Android 上的导航栏图标颜色

android - 如何知道 BroadcastReceiver 中的飞行模式是打开还是关闭?

android - 无法从数据库中获取数据并有意传递

android - 在服务和 Activity 之间传递参数

android - 方向改变后的第二个 Activity 实例

java - 如何用数字和章程组合的 5 位数字创建随机数

Android App ID前缀问题

Android - 重置不同 Activity 的字段

android - 线程会在 Android 中的 Activity 完成之前被杀死吗?

android - 如何清除 Activity 下方的 Activity 堆栈