【发布时间】:2014-02-19 09:07:48
【问题描述】:
我正在从一项服务启动一项活动,并希望它出现在最近的应用列表中。
但是,如果我退出应用程序(例如,按下调用 finish() 的活动 UI 上的按钮),我希望从最近的应用程序列表中删除该活动。
使用android:excludeFromRecents="true" 从最近的应用程序列表中排除活动不会给我所需的初始活动行为,即出现在最近的应用程序列表中的活动。
这可能吗?
【问题讨论】:
我正在从一项服务启动一项活动,并希望它出现在最近的应用列表中。
但是,如果我退出应用程序(例如,按下调用 finish() 的活动 UI 上的按钮),我希望从最近的应用程序列表中删除该活动。
使用android:excludeFromRecents="true" 从最近的应用程序列表中排除活动不会给我所需的初始活动行为,即出现在最近的应用程序列表中的活动。
这可能吗?
【问题讨论】:
使用
android:excludeFromRecents="true"
清单文件中的活动
android:excludeFromRecents
是否应排除此活动发起的任务 从最近使用的应用程序(“最近的应用程序”)列表中。那是, 当这个活动是一个新任务的根活动时,这个属性 确定任务是否不应该出现在最近的列表中 应用。如果该任务应从列表中排除,则设置为“true”;放 “假”,如果它应该被包括在内。默认值为“false”。
【讨论】:
对于 api > 21 你可以尝试finishAndRemoveTask() 而不是finish()
【讨论】:
是的,通常当您希望在启动 Activity 时为其具有特殊属性时,您需要为 Intent 提供特殊标志。在这种情况下FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS。
更新:
如果您需要隐藏当前已经运行的活动,您可以将此标志与 FLAG_ACTIVITY_CLEAR_TOP 结合使用,这会将新 Intent 发送到现有活动。不过,您必须考虑并尝试尝试当用户在您的堆栈中移动时会发生什么,以及这是否会使您的应用重新出现在最近的应用中。
【讨论】: