从任务管理器输入时,意图参数始终保持不变

时间:2019-01-07 05:38:44

标签: android android-intent android-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()
        }

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

1 个答案:

答案 0 :(得分:1)

这是Bug或Android的功能,具体取决于您希望事情如何运作。对您来说,显然,它更多的是错误而不是功能。查看我对类似问题here

的详细分析

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

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