Android moveTaskToBack还隐藏了启动调用Application的应用程序

时间:2018-02-11 14:59:53

标签: android android-activity service

我正在开发2个应用程序,这些应用程序将在不同的进程中运行,并且通过Android Messenger IPC介质与客户端 - 服务器进行通信。

应用程序A(服务器应用程序)建立一个Bound Service,它可以由App B(客户端应用程序)显式启动,以请求连接并执行某些操作。

应用B,客户端应用程序,建立自己的Bound Service - 明确启动并保持与App A的Bound Service的联系 - 这是{{1}的约束通过不同的Application进行级别和交互,通过Activities个实例给出后者的反馈。

在某些情况下,应用程序A Handler需要触发一系列Bound Service启动,专门编写脚本以确定其服务器功能正常工作的必要要求App B' Activity进行了调查。但是,一旦设置完毕,我需要将App B带回前台,以便用户与之交互。

在该特定应用A活动中,我在Bound Service中实施了moveTaskToBack(true),以防止用户默认意外关闭应用,并打算简单地呼叫onBackPressed()以上述方式启动App B的任务。

然而,即使App B已onBackPressed()正在运行,但当App B的Activities称为App A' Service时,它仍处于前台应用程序A Service到前台,从应用程序A Activities 调用onBackPressed()会将用户直接发送回主屏幕,绕过应用程序B.

如何简单地告诉App A将自己发送到后台并显示App B,而不将App B发送到后台?为什么Activity也将其他任务移到后面?

1 个答案:

答案 0 :(得分:0)

所以,我还没有找到确切的方式通知App A发送自己,而不是启动它的任务(App B)到后台,但我找到了一种方法来简单地告诉App A发送App B在它面前,对我有用。

通过跨越两个绑定服务的Messenger,我发送App B的taskID,从ActivitiesgetTaskID()中的任何一个,通过将其传递到{{1}通过Messenger实例发送的消息。

然后,通过在App A中启动后续活动的所有链接Intent进行Bundle,我可以访问App A中目标msg.obj中的taskID,然后使用

Activity

将App B发送到前台。当在App B上按下后退时ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); activityManager.moveTaskToFront(taskID, ActivityManager.MOVE_TASK_WITH_HOME); (onBackPressed()没有被覆盖),我发现自己回到App A上,这对于Activity标志来说似乎很奇怪,但它并没有太多麻烦我

我仍然愿意接受原始问题的答案,但如果有的话,我会将其设置为正确的答案。