我正在开发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
也将其他任务移到后面?
答案 0 :(得分:0)
所以,我还没有找到确切的方式通知App A发送自己,而不是启动它的任务(App B)到后台,但我找到了一种方法来简单地告诉App A发送App B在它面前,对我有用。
通过跨越两个绑定服务的Messenger,我发送App B的taskID
,从Activities
到getTaskID()
中的任何一个,通过将其传递到{{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
标志来说似乎很奇怪,但它并没有太多麻烦我
我仍然愿意接受原始问题的答案,但如果有的话,我会将其设置为正确的答案。