显示在最近使用的应用和应用恢复中

启动器launcher会显示最近恢复的任务的标签和图标。如果您的应用包包含多个应用作为单独的启动器活动,则启动器不知道要为非启动器活动(例如从磁贴或通知启动的活动)显示哪个标签和图标。这可能会导致您的应用不在启动器的“最近使用”列表中显示,或者显示不正确。

标记所有活动

确保您的活动(包括非启动器活动)在清单文件中正确标记,如下所示。

图 1. 正确标记的活动的示例。

  1. 对于AndroidManifest.xml文件中的每个活动,确定它属于哪个启动器活动。
  2. 将图标、圆形图标和标签从父启动器活动复制到每个关联的非启动器活动。
  3. 对于在多个启动器活动之间共享的活动,请确定要显示哪个代表所有这些活动的图标和标签。

分配RecentTasks

要在启动器的“最近使用”部分使用RecentTasks,请确保您的taskAffinity元素在AndroidManifest.xml文件中正确定义,并且您始终如一地管理任务和返回堆栈。

分配任务时,请记住以下几点

  • 为应用中的每个任务选择一个唯一的taskAffinity名称。您可以将每个启动器活动及其子活动视为一个任务。将该taskAffinity分配给清单文件中的每个相关活动。
  • 避免使用FLAG_ACTIVITY_NEW_TASKFLAG_ACTIVITY_CLEAR_TOP调用startActivity()
  • 避免创建跳板活动,即仅启动其他活动的活动。使用SplashScreen API创建启动画面。
  • 当您不希望您的活动显示在“最近使用”部分时,请使用android:excludeFromRecents="true"android:noHistory="true"标志。
  • 确定活动的最佳启动模式,并以此为基础进行开发。

调试技巧

调试时注意以下几点

  • 如果“最近使用”部分中单个应用出现重复条目,请检查是否不当使用了NEW_TASK标志。
  • 如果显示了错误的图标或标签,请确保每个关联的非启动器活动与其父活动具有相同的图标、圆形图标和标签。
  • 如果在点击启动器中的条目后系统没有启动任何内容,请检查Logcat(按“launcher”过滤)中的错误,因为此问题可能是由跳板活动引起的。