Shadow icon indicating copy to clipboard operation
Shadow copied to clipboard

PluginManagerThatSupportMultiLoader使用问题

Open zhuqichao opened this issue 2 years ago • 4 comments

没有找到PluginManagerThatSupportMultiLoader的使用示例代码 请教一下这个类应该怎么使用: 插件的partKey应该怎么传入?

zhuqichao avatar May 23 '22 06:05 zhuqichao

应该是要实现多个PluginManagerThatSupportMultiLoader的子类,每个子类分配一个新概念PluginKey的值。

PPS基类也要换成对应的MultiLoaderPluginProcessService

PluginKey对应多套runtime、loader、插件。然后这个manager的mPpsController的类型是MultiLoaderPpsController,对比PpsController每个方法就都多出了PluginKey

这样调用getPluginLoaderForPlugin方法得到的还是跟以前一样的PluginLoader接口。所以“插件的partKey”如何传入和以前就是一样的了。

shifujun avatar May 23 '22 09:05 shifujun

应该是要实现多个PluginManagerThatSupportMultiLoader的子类,每个子类分配一个新概念PluginKey的值。

PPS基类也要换成对应的MultiLoaderPluginProcessService

PluginKey对应多套runtime、loader、插件。然后这个manager的mPpsController的类型是MultiLoaderPpsController,对比PpsController每个方法就都多出了PluginKey

这样调用getPluginLoaderForPlugin方法得到的还是跟以前一样的PluginLoader接口。所以“插件的partKey”如何传入和以前就是一样的了。

好像不行吧,是这样理解吗: 每个插件有一个PluginKey,每个PluginKey对应一个PluginManagerThatSupportMultiLoader的子类 1、manager对象在什么时机创建呢? 2、由于一个进程只有一个PPS实例,那么PluginManagerThatSupportMultiLoader的onPluginServiceConnected也只会回调一次吧

zhuqichao avatar May 23 '22 09:05 zhuqichao

每个插件有一个PluginKey

不是每个插件,是每个PluginManagerThatSupportMultiLoader的子类,对应每个loader。

manager对象在什么时机创建呢?

和之前一样,由宿主中的代码自行决定。

由于一个进程只有一个PPS实例,那么PluginManagerThatSupportMultiLoader的onPluginServiceConnected也只会回调一次吧

你应该还没有测试吧?每个manager实例应该都是独立bind的PPS,所以它们都会各自收到一次bind的回调,进而回调到onPluginServiceConnected方法。

PS:刚才发现这里的onPluginServiceConnected方法名不对,应该叫onPluginProcessServiceConnected

shifujun avatar May 23 '22 09:05 shifujun

每个插件有一个PluginKey

不是每个插件,是每个PluginManagerThatSupportMultiLoader的子类,对应每个loader。 我需要实现的需求是,每个进程管理多个插件,每个插件有独立的loader,从而解决重复添加组件的问题,是否是这个场景,如果是的话,是每个插件对应一个PluginManagerThatSupportMultiLoader的子类吗?

manager对象在什么时机创建呢?

和之前一样,由宿主中的代码自行决定。 之前不是宿主自行决定,是通过实现ManagerFactory,返回manager实例的

由于一个进程只有一个PPS实例,那么PluginManagerThatSupportMultiLoader的onPluginServiceConnected也只会回调一次吧

你应该还没有测试吧?每个manager实例应该都是独立bind的PPS,所以它们都会各自收到一次bind的回调,进而回调到onPluginServiceConnected方法。

PS:刚才发现这里的onPluginServiceConnected方法名不对,应该叫onPluginProcessServiceConnected

zhuqichao avatar May 23 '22 10:05 zhuqichao