启动器开发 - 主页按钮不会回到初始 activity

Launcher development - Home button not going back to initial activity

我有一个用作启动器的应用程序。此应用有 3 个活动:

所有活动都通过 startActivity 启动,包括应用程序。

我想要标准的 Android 启动器行为,即:当通过 DashboardActivity 进入应用程序时,如果我单击主页按钮,转到主启动器 activity (LauncherActivity),然后单击返回时,转到仪表板 (DashboardActivity)。

我遇到的问题是,当单击主页时,它返回到 DashboardActivity,而不是 LauncherActivity。如果我完成 DashboardActivity,然后在点击应用程序时返回 LauncherActivity

关于如何解决这个问题有什么想法吗?

这绝对是 back/task 堆栈相关的。有关任务堆栈的详细信息,请参阅 this link

当您从 LauncherActivity 转到 DashboardActivity 时,仪表板将放置到任务堆栈中。当通过主页按钮再次请求 LauncherActivity 时,任务堆栈将恢复到启动 LauncherActivity 后使用的最后一个 Activity,即 DashboardActivity

您有几种不同的选择来解决这个问题:

  1. 不要为 "dashboard" 使用单独的 Activity。考虑一个抽屉,甚至是一个显示内容的 Fragment,当它完成调用 startActivity 以启动另一个应用程序时,可以弹出回主 LauncherActivity
  2. 在您的 DashboardActivity 调用 startActivity 之后,它应该调用 finish(),这样它就会从当前任务堆栈中弹出。
  3. 通常启动器设置为在 singleInstance 模式下启动,防止多个启动器实例同时 Activity 到 运行。请注意,您需要在 LauncherActivity.
  4. 中支持 onNewIntent
  5. 为防止与任务管理器进行奇怪的交互,请考虑在 DashboardActivity 启动器时设置 FLAG_ACTIVITY_NO_HISTORY