【发布时间】:2018-02-11 14:59:53
【问题描述】:
我正在开发 2 个应用程序,它们将在单独的进程中运行,并像客户端-服务器一样通过 Android 的 Messenger IPC 介质进行通信。
服务端应用程序 A 建立一个Bound Service,客户端应用程序应用程序 B 可以在外部显式启动该Bound Service,以请求连接并执行一些操作。
App B,客户端应用程序,建立它自己的Bound Service - 显式启动并保持与 App A 的 Bound Service 的联系 - 绑定在 Application 级别并与不同的 Activities 交互,给出后者通过他们的Handler 实例进行反馈。
在某些情况下,应用 A 的 Bound Service 在被应用 B 的 Bound Service 轮询后,需要触发一系列 Activity 启动,这些启动经过专门脚本确定其服务器功能正常工作的必要条件。但是,一旦它们设置完毕,我需要将 App B 带回前台以便用户与之交互。
在那个特定的 App A 的 Activity 中,我在 onBackPressed() 中实现了 moveTaskToBack(true),以防止用户在默认情况下意外关闭应用程序,并打算简单地调用 onBackPressed() 以显示 App B 在上述启动时的任务方式。
然而,即使 App B 有 Activities 正在运行并且在 App B 的 Service 调用 App A 的 Service 时处于前台,这反过来又将 App A 的 Activities 启动到前台,从调用 onBackPressed()应用 A 的 Activity 绕过应用 B,将用户直接送回主屏幕。
我如何简单地告诉 App A 将自己发送到后台并显示 App B,而不将 App B 也发送到后台?为什么moveTaskToBack() 也将所有其他任务都移到后面?
【问题讨论】:
标签: android android-activity service