Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

startActivityForResult()启动插件中的activity,无法得到回调 #72

Open
furutuki opened this issue Nov 13, 2015 · 5 comments
Open
Labels

Comments

@furutuki
Copy link

宿主activity A利用startActivityForResult启动插件中activity B,通过单步跟踪发现,启动B后立刻就回调了onActivityForResult,但是数据data是空。本来我是打算在B里面某个操作后才回填数据,返回的,请问有什么解决的办法?

@Mortimer2013
Copy link

我也发现这个问题,也试了广播、service等方式,发现宿主和插件的双向通信没有办法实现。目前的方式是在宿主中启动插件,插件完成任务后将数据保存到SharedPreference中供宿主使用,不过这存在一个问题:宿主不知道插件什么时候完成了任务。。

@cmzy cmzy added the bug label Mar 1, 2016
@cheukho
Copy link

cheukho commented Mar 2, 2016

这套插件的机制就是独立进程,因此是不允许这样通讯的。我梳理了一些通讯方式

IPC(跨进程通讯)
 使用文件共享:File、SharedPrefernces(高并发的时很大几率丢失数据)
 Messenger:对AIDL的封装,串行方式处理,高并发不适用
 AIDL

@Mortimer2013
Copy link

Messenger只能完成单向的,如service和宿主,或者service和插件之间的通信,没法将宿主和插件连通起来。。AIDL没试过,sharepreference倒是可以,不过由于是异步的,所以宿主程序很难判断插件什么时候完成了任务,除非定时取检查是否生成了preference文件

@tiann
Copy link
Contributor

tiann commented Mar 2, 2016

Messenger可以双向。

@Mortimer2013
Copy link

你说的双向应该是指的apk和service之间的,此处的apk可以是宿主或插件之一,但是没法借助service将宿主和插件连通起来。比如同一个service,在和宿主和插件通信时,存储在service中的成员变量不能共享,相当于宿主和service A通信,插件和service B通信,两者的数据没法共享

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants