启动器会显示最近恢复的任务的标签和图标。如果您的应用包中有多个应用作为单独的启动器 activity,启动器将不知道要为非启动器 activity(例如从瓷贴或通知启动的 activity)显示哪个标签和图标。这可能会导致您的应用未显示在启动器的“最近应用”列表中,或者显示不正确。
标记所有 activity
确保您的 activity(包括非启动器 activity)在清单文件中正确标记,如下所示。
图 1. 正确标记 activity 的示例。
- 对于
AndroidManifest.xml
文件中的每个 activity,确定它属于哪个启动器 activity。 - 将图标、圆形图标和标签从父启动器 activity 复制到每个关联的非启动器 activity 中。
对于在多个启动器 activity 之间共享的 activity,决定显示哪个图标和标签来代表所有这些 activity。
分配 RecentTasks
要在启动器中使用 RecentTasks
作为“最近应用”部分,请确保在 AndroidManifest.xml
文件中正确定义了您的 taskAffinity
元素,并确保您一致地管理任务和返回堆栈。
分配任务时请牢记以下注意事项
- 为应用中的每个任务选择一个唯一的
taskAffinity
名称。您可以将每个启动器 activity 及其子 activity 视为一个任务。将该taskAffinity
分配给清单文件中的每个相关 activity。 - 避免使用
FLAG_ACTIVITY_NEW_TASK
或FLAG_ACTIVITY_CLEAR_TOP
调用startActivity()
。 - 避免创建跳板 activity,这些 activity 只会启动其他 activity。使用 SplashScreen API 创建启动画面。
- 当您不希望您的 activity 显示在“最近应用”部分时,使用
android:excludeFromRecents="true"
和android:noHistory="true"
标志。 - 确定您的 activity 的最佳启动模式,并以此为念进行开发。
调试提示
调试时请注意以下事项
- 如果单个应用在“最近应用”部分出现重复条目,请检查您是否不当使用了
NEW_TASK
标志。 - 如果显示错误的图标或标签,请确保每个关联的非启动器 activity 具有与其父 activity 相同的图标、圆形图标和标签。
- 如果在启动器中轻触条目后系统未启动任何内容,请检查 Logcat(按“launcher”过滤)以查找错误,因为此问题可能是由跳板 activity 引起的。
为您推荐
- 注意:当 JavaScript 关闭时,会显示链接文本
- 任务和返回堆栈
- 为您的应用创建自定义快速设置瓷贴
- 学习 Jetpack 导航