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

来源:7-10 插件间AIDL接口通信 (下)

路程

2021-01-06

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

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

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

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

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

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

写回答

1回答

qndroid

2021-01-07

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

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

0
2
路程
第二个问题,我看了registerPluginBinder中的源码似乎并没有service这种中间件来转发,好像只能通信,只能是注册registerPluginBinder那个进程才能拿到binder,
2021-01-08
共2条回复

还原大厂App重构过程 完成企业级项目重构

真实还原大厂App重构过程,进击高级工程师必备

450 学习 · 57 问题

查看课程