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

关于解决【4.6 存在待解决问题】的建议 #12

Open
luckybilly opened this issue Feb 21, 2019 · 1 comment
Open

关于解决【4.6 存在待解决问题】的建议 #12

luckybilly opened this issue Feb 21, 2019 · 1 comment

Comments

@luckybilly
Copy link

luckybilly commented Feb 21, 2019

@yangchong211 你好,我是开源库CC的作者,也是组件化技术的爱好者,今天(19.02.21)在掘金上从你的文章ARouter路由解析中进入到你的github主页,从而发现了这个项目,在阅读README的过程中看到4.6 存在待解决问题提出的问题,正好可以提供点建议,所以冒昧前来交流一下:

第一个建议是:开始使用arouter-register插件

由于本项目的组件化引擎是ARouter,从1.3.1版本开始使用了我PR的自动注册插件arouter-register替代dex扫描来完成路由表的跨module注册以提高初始化性能并解决apk加固的兼容性问题。不过貌似本项目目前并未使用arouter-reigister插件

第二个建议是:用AutoRegister插件代替arouter-register插件来解决问题

arouter-register插件是在AutoRegister插件的基础上ARouter定制的简化版本,只完成了路由表相关的3个接口实现类的自动注册,其好处是不需要用户手动配置扫描规则
AutoRegister插件是一个与具体业务无关的功能性框架,根据配置的规则,使用ASM来扫描字节码并生成注册代码。
所以,我们可以为AutoRegister插件配置ARouter的扫描需求,并额外通过增加配置来完成【4.6 存在待解决问题】中的需求,具体配置方法见AutoRegister文档

也可以参考这篇文章来配置,还需要仿照ARouter里LogisticsCenter的写法,在MyApplication中提供2个生成自动注册代码所需要的方法

以上,即可实现【4.6 存在待解决问题】中的需求

很高兴在你的文章里关于跨进程解决思路相关描述中提到了CC,CC在2.0版本之前确实使用的是BroadcastReceiver + Service + LocalSocket的方案来实现跨app组件调用。

2018年9月份CC进入了2.0时代,重构了跨进程通信机制和自动注册插件,新版本框架底层使用了ContentProvider + AIDL来实现跨进程(包括App内部可跨App)的组件调用

欢迎前来围观: https://github.com/luckybilly/CC

另外,由于CC是基于组件调用而非路由跳转来实现组件之间通信的,不需要繁琐的onActivityResult,也就能避免README中4.7 组件化中Fragment通信难点这个章节中提到的Fragment回调问题

以上!

@yangchong211
Copy link
Owner

好的,非常感谢你的建议!

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

No branches or pull requests

2 participants