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