我使用捷径来启动带有动作和参数的活动。
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 传递的值仍然存在。我想从任务管理器输入活动时清除这些值。
答案 0 :(得分:1)
这是Bug或Android的功能,具体取决于您希望事情如何运作。对您来说,显然,它更多的是错误而不是功能。查看我对类似问题here
的详细分析要解决您的问题,您可以尝试创建一个用于快捷方式的<activity-alias>
。 <activity-alias>
指向用作主启动器的同一<activity>
,但是您可以指定不同的标志和行为。如果在android:excludeFromRecents="true"
中指定<activity-alias>
并在快捷方式中使用<activity-alias>
,则应该可以解决您的问题。
如果您的整个应用程序仅包含一个Activity
,则可以在清单中为android:excludeFromRecents="true"
添加Activity
来轻松解决问题(在这种情况下,您不需要需要<activity-alias>
)。