我目前正在使用意图在两个应用之间进行通信。第一个应用程序启动第二个应用程序捕获的意图。在第二个应用程序中,我有一个包含多个活动的进程,在进程结束时,最后一个活动应该将结果返回给调用者应用程序。在一个简单的图表中是这样的:
App 1 ----- Launch Intent -----> App 2 Activity1
App 2 Activity2
App 2 Activity3
App1 <----- Intent Response ---- App 2 Activity4
OnActivityResult
我认为在这种情况下,App2 Activity1应该是负责响应App1的活动,因此我尝试使用Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK
从App2活动4“清空后台堆栈”,但是我我无法从App2 Activity1“杀死”App2,它总是回到App2 Activity3。
我认为另一个替代方案可能是在App2上始终等待结果启动每个活动,并从App2 Activity 4初始化从活动4到活动1的通知链但我觉得如果用户启动此选项可能会有一些奇怪的行为继续前进并回顾活动...:s
要实现从app2向app1发回信息的任何想法吗?
感谢。
答案 0 :(得分:1)
最后我找到了解决问题的方法,就像使用Intent.FLAG_ACTIVITY_CLEAR_TOP重新启动App2 Activity1并返回在intent中作为额外包含的进程结果一样简单。
最后,为了将信息返回给app1,如果意图包含结果信息,则从App2 Activity1返回信息,只需设置意图结果并完成即可。
答案 1 :(得分:0)
App1上的BroadcastReceiver会监听结果,当结果发出时,它会启动App1.Activity吗?听起来不错?这样,无论你在App2中花多长时间,你仍会回到app1?唯一的缺点是它不会将App1.Activity保留在堆栈中,但如果数据在广播意图中,那么这可能无关紧要。我无法对点数进行评论,但在您的解决方案中,CLEAR_TOP是否也会清除原始呼叫应用的活动?您也可以考虑使用片段与向导的活动。