问题:由于插件是以单独apk形式存在的,所以插件中需要静态注册的ContentProvider和BroadcastReceiver无法生效。
解决方案:
1、ContentProvider
主要用于数据库的创建,需要在manifest中注册,但是ContentProvider中数据的创建和ContentResolver对数据库的增删改查操作是相对分开的。所以,可以将ContentProvider的数据库创建代码和ContentResolver对数据库的增删改查操作进行分离,并将ContentProvider的数据库创建代码移到主工程中。
2、BroadcastReceiver
广播分为静态和动态注册两种,动态注册可以在插件中通过传入的Context完成。插件静态广播在manifest注册无法生效,所以讲静态广播移到主工程中,并通过反射或扩展接口调用插件广播处理代码。

本文介绍了在插件化开发过程中遇到的ContentProvider和BroadcastReceiver无法正常工作的问题及其解决方案。对于ContentProvider,建议将数据库创建代码分离并移至主工程;对于BroadcastReceiver,推荐将静态注册的部分移至主工程并通过反射或接口调用来执行插件内的广播接收处理。
836

被折叠的 条评论
为什么被折叠?



