请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

跨进程又跨插件是不是不能用registerPluginBinder和fetchBinder通信

两个问题,一个是注册aidl接口的时机,怎么在application中注册会被不同进程调用多次
二是跨进程跨插件 用registerPluginBinder和fetchBinder来通信 是否能切换进程,比如我想一个功能在某插件的A进程触发,调用到其他插件的B进程中去执行,

当我在我的插件中application中注册 aidl 接口的时候,如果我限制只在主进程注册,如下

if(如果是主进程) {
            //对外注册aidl 功能接口供其它插件调用
            RePlugin.registerPluginBinder(ImRongyunPluginConfig.KEY_INTERFACE, ImModuleFunctionImpl())
 }

其他插件如果是运行在其他进程(非主进程) 来执行fetchBinder的话, , 我发现此时 RePlugin.fetchBinder ()始终为空,

打印了一下日志发现,application 中的onCreate 会被调用多次,基本上一个主进程 ,一个 什么p1 进程之类的。

有没有那种能获取到主进程注册的binder的办法啊。我希望其他插件的其他进程回调过来,能在我指定的进程执行。

正在回答 回答被采纳积分+3

1回答

qndroid 2021-01-07 12:26:05

第一个问题,在application初始化得时候,判断当前进程名,只在主进程中初始化,这个是常规操作。

第二个问题,aidl本身就是为了跨进程通信而存在的,感觉你取不到是因为第一个问题导致的,你先保证只初始化一次看看能行不

0 回复 有任何疑惑可以回复我~
  • 提问者 路程 #1
    第一个问题我下去思考了一下,因为一旦有运行在他进程的插件,他要能使用别的插件,所以他要加载一遍其他插件的application,主进程也是这样,所以会执行多次,
    回复 有任何疑惑可以回复我~ 2021-01-08 01:15:55
  • 提问者 路程 #2
    第二个问题,我看了registerPluginBinder中的源码似乎并没有service这种中间件来转发,好像只能通信,只能是注册registerPluginBinder那个进程才能拿到binder,
    回复 有任何疑惑可以回复我~ 2021-01-08 01:18:10
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号