AutoInject:Android通用的组件自动注册,自动初始化解决方案-源码

上传者: 42178963 | 上传时间: 2021-02-03 01:06:24 | 文件大小: 211KB | 文件类型: ZIP
自动进样 Android通用的组件自动注册,自动初始化解决方案 背景问题 我们在组件化的过程,业务被分割成独立的Module中,一些公共组件会在各个Module中通过APT生成一些需要被注册至组件中的信息类,诸如EventBus生成的Index类。我们这边RN定制的插件是跟随各自的模块,需要被注册。还有,各个模块对外提供的api接口的话,也需要被注册。 另外,有些组件为某些Module特有,需要在App启动的时候就要初始化,有些需要在主线程中初始化,有些为不相邻的主线程可以在非主线程中初始化。 在组件化之前,我们是在主模块通过硬编码来进行注册,在应用程序中堆叠各个组件的初始化逻辑。 有没有更好的解决方式? 解决思路 首先,将问题分解摘要: 把注册行为进行抽象化,可以把一个类(需要被注册的信息)选择方法函数的入参,那方法函数就可以可以是对注册相关逻辑的实现。那注册问题可以进一步转化为各模块如何把相关类(需要被注册的信息)转换为方法函数的入参,组件定义方法函数,获取入参来实现注册逻辑。 A a = new A() B b = new B() b.shoot(a.get())

文件下载

资源详情

[{"title":"( 77 个子文件 211KB ) AutoInject:Android通用的组件自动注册,自动初始化解决方案-源码","children":[{"title":"AutoInject-master","children":[{"title":"gradlew <span style='color:#111;'> 4.85KB </span>","children":null,"spread":false},{"title":"settings.gradle <span style='color:#111;'> 118B </span>","children":null,"spread":false},{"title":"auto-inject-core","children":[{"title":"src","children":[{"title":"main","children":[{"title":"AndroidManifest.xml <span style='color:#111;'> 117B </span>","children":null,"spread":false},{"title":"res","children":[{"title":"values","children":[{"title":"strings.xml <span style='color:#111;'> 74B </span>","children":null,"spread":false}],"spread":true}],"spread":true},{"title":"java","children":[{"title":"com","children":[{"title":"eastwood","children":[{"title":"common","children":[{"title":"autoinject","children":[{"title":"AutoArrow.java <span style='color:#111;'> 267B </span>","children":null,"spread":false},{"title":"IAutoArrow.java <span style='color:#111;'> 91B </span>","children":null,"spread":false},{"title":"AutoBowArrow.java <span style='color:#111;'> 271B </span>","children":null,"spread":false},{"title":"AutoBow.java <span style='color:#111;'> 287B </span>","children":null,"spread":false},{"title":"IAutoBow.java <span style='color:#111;'> 97B </span>","children":null,"spread":false},{"title":"IAutoBowArrow.java <span style='color:#111;'> 96B </span>","children":null,"spread":false},{"title":"AutoTarget.java <span style='color:#111;'> 245B </span>","children":null,"spread":false}],"spread":true}],"spread":true}],"spread":true}],"spread":true}],"spread":true}],"spread":true}],"spread":true},{"title":".gitignore <span style='color:#111;'> 7B </span>","children":null,"spread":false},{"title":"build.gradle <span style='color:#111;'> 1.93KB </span>","children":null,"spread":false},{"title":"proguard-rules.pro <span style='color:#111;'> 751B </span>","children":null,"spread":false}],"spread":true},{"title":"modules","children":[{"title":"moduleC","children":[{"title":"src","children":[{"title":"main","children":[{"title":"AndroidManifest.xml <span style='color:#111;'> 329B </span>","children":null,"spread":false},{"title":"res","children":[{"title":"values","children":[{"title":"strings.xml <span style='color:#111;'> 70B </span>","children":null,"spread":false}],"spread":true}],"spread":true},{"title":"java","children":[{"title":"com","children":[{"title":"eastwood","children":[{"title":"demo","children":[{"title":"module","children":[{"title":"c","children":[{"title":"ModuleCActivity.java <span style='color:#111;'> 679B </span>","children":null,"spread":false},{"title":"ModuleCAutoArrow.java <span style='color:#111;'> 522B </span>","children":null,"spread":false}],"spread":false}],"spread":false}],"spread":true}],"spread":true}],"spread":true}],"spread":true}],"spread":true}],"spread":true},{"title":"build.gradle <span style='color:#111;'> 839B </span>","children":null,"spread":false},{"title":"proguard-rules.pro <span style='color:#111;'> 934B </span>","children":null,"spread":false}],"spread":true},{"title":"moduleB","children":[{"title":"src","children":[{"title":"main","children":[{"title":"AndroidManifest.xml <span style='color:#111;'> 329B </span>","children":null,"spread":false},{"title":"res","children":[{"title":"values","children":[{"title":"strings.xml <span style='color:#111;'> 70B </span>","children":null,"spread":false}],"spread":true}],"spread":true},{"title":"java","children":[{"title":"com","children":[{"title":"eastwood","children":[{"title":"demo","children":[{"title":"module","children":[{"title":"b","children":[{"title":"ModuleBActivity.java <span style='color:#111;'> 679B </span>","children":null,"spread":false},{"title":"ModuleBAutoArrow.java <span style='color:#111;'> 522B </span>","children":null,"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":true}],"spread":true}],"spread":true}],"spread":true}],"spread":true},{"title":"build.gradle <span style='color:#111;'> 839B </span>","children":null,"spread":false},{"title":"proguard-rules.pro <span style='color:#111;'> 934B </span>","children":null,"spread":false}],"spread":true}],"spread":true},{"title":"gradle","children":[{"title":"wrapper","children":[{"title":"gradle-wrapper.properties <span style='color:#111;'> 230B </span>","children":null,"spread":false},{"title":"gradle-wrapper.jar <span style='color:#111;'> 52.38KB </span>","children":null,"spread":false}],"spread":true}],"spread":true},{"title":"README.md <span style='color:#111;'> 6.56KB </span>","children":null,"spread":false},{"title":"gradlew.bat <span style='color:#111;'> 2.26KB </span>","children":null,"spread":false},{"title":"auto-inject-plugin","children":[{"title":"settings.gradle <span style='color:#111;'> 34B </span>","children":null,"spread":false},{"title":"src","children":[{"title":"main","children":[{"title":"groovy","children":[{"title":"com","children":[{"title":"eastwood","children":[{"title":"tools","children":[{"title":"plugins","children":[{"title":"autoinject","children":[{"title":"AutoType.groovy <span style='color:#111;'> 113B </span>","children":null,"spread":false},{"title":"AutoInjectPlugin.groovy <span style='color:#111;'> 796B </span>","children":null,"spread":false},{"title":"AutoClassInfo.groovy <span style='color:#111;'> 1.13KB </span>","children":null,"spread":false},{"title":"AutoInjector.groovy <span style='color:#111;'> 8.83KB </span>","children":null,"spread":false},{"title":"Logger.groovy <span style='color:#111;'> 373B </span>","children":null,"spread":false},{"title":"AutoClassInfoComparator.groovy <span style='color:#111;'> 373B </span>","children":null,"spread":false},{"title":"adapter","children":[{"title":"TargetClassMethodAdapter.groovy <span style='color:#111;'> 6.62KB </span>","children":null,"spread":false},{"title":"BowArrowClassAdapter.groovy <span style='color:#111;'> 6.33KB </span>","children":null,"spread":false},{"title":"OnMethodInjectListener.groovy <span style='color:#111;'> 113B </span>","children":null,"spread":false},{"title":"TargetClassAdapter.groovy <span style='color:#111;'> 1.15KB </span>","children":null,"spread":false},{"title":"OnAnnotationValueListener.groovy <span style='color:#111;'> 140B </span>","children":null,"spread":false},{"title":"AnnotationAdapter.groovy <span style='color:#111;'> 809B </span>","children":null,"spread":false}],"spread":false},{"title":"AutoInjectExtension.groovy <span style='color:#111;'> 134B </span>","children":null,"spread":false},{"title":"AutoInjectTransform.groovy <span style='color:#111;'> 2.47KB </span>","children":null,"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":true}],"spread":true},{"title":"resources","children":[{"title":"META-INF","children":[{"title":"gradle-plugins","children":[{"title":"auto-inject.properties <span style='color:#111;'> 75B </span>","children":null,"spread":false}],"spread":false}],"spread":false}],"spread":true}],"spread":true}],"spread":true},{"title":"build.gradle <span style='color:#111;'> 1.48KB </span>","children":null,"spread":false}],"spread":true},{"title":"picture","children":[{"title":"1.png <span style='color:#111;'> 43.96KB </span>","children":null,"spread":false}],"spread":true},{"title":"gradle.properties <span style='color:#111;'> 730B </span>","children":null,"spread":false},{"title":".gitignore <span style='color:#111;'> 403B </span>","children":null,"spread":false},{"title":"app","children":[{"title":"src","children":[{"title":"main","children":[{"title":"AndroidManifest.xml <span style='color:#111;'> 743B </span>","children":null,"spread":false},{"title":"res","children":[{"title":"mipmap-hdpi","children":[{"title":"ic_launcher.png <span style='color:#111;'> 2.98KB </span>","children":null,"spread":false},{"title":"ic_launcher_round.png <span style='color:#111;'> 4.91KB </span>","children":null,"spread":false}],"spread":false},{"title":"mipmap-xxxhdpi","children":[{"title":"ic_launcher.png <span style='color:#111;'> 9.03KB </span>","children":null,"spread":false},{"title":"ic_launcher_round.png <span style='color:#111;'> 15.16KB </span>","children":null,"spread":false}],"spread":false},{"title":"mipmap-xhdpi","children":[{"title":"ic_launcher.png <span style='color:#111;'> 4.46KB </span>","children":null,"spread":false},{"title":"ic_launcher_round.png <span style='color:#111;'> 6.93KB </span>","children":null,"spread":false}],"spread":false},{"title":"mipmap-anydpi-v26","children":[{"title":"ic_launcher.xml <span style='color:#111;'> 272B </span>","children":null,"spread":false},{"title":"ic_launcher_round.xml <span style='color:#111;'> 272B </span>","children":null,"spread":false}],"spread":false},{"title":"mipmap-mdpi","children":[{"title":"ic_launcher.png <span style='color:#111;'> 2.05KB </span>","children":null,"spread":false},{"title":"ic_launcher_round.png <span style='color:#111;'> 2.79KB </span>","children":null,"spread":false}],"spread":false},{"title":"drawable","children":[{"title":"ic_launcher_background.xml <span style='color:#111;'> 5.47KB </span>","children":null,"spread":false}],"spread":false},{"title":"layout","children":[{"title":"activity_main.xml <span style='color:#111;'> 426B </span>","children":null,"spread":false}],"spread":false},{"title":"drawable-v24","children":[{"title":"ic_launcher_foreground.xml <span style='color:#111;'> 1.84KB </span>","children":null,"spread":false}],"spread":false},{"title":"values","children":[{"title":"colors.xml <span style='color:#111;'> 208B </span>","children":null,"spread":false},{"title":"strings.xml <span style='color:#111;'> 80B </span>","children":null,"spread":false},{"title":"styles.xml <span style='color:#111;'> 383B </span>","children":null,"spread":false}],"spread":false},{"title":"mipmap-xxhdpi","children":[{"title":"ic_launcher.png <span style='color:#111;'> 6.31KB </span>","children":null,"spread":false},{"title":"ic_launcher_round.png <span style='color:#111;'> 10.43KB </span>","children":null,"spread":false}],"spread":false}],"spread":false},{"title":"java","children":[{"title":"com","children":[{"title":"eastwood","children":[{"title":"demo","children":[{"title":"ToastAutoBow.java <span style='color:#111;'> 611B </span>","children":null,"spread":false},{"title":"App.java <span style='color:#111;'> 624B </span>","children":null,"spread":false},{"title":"MainActivity.java <span style='color:#111;'> 735B </span>","children":null,"spread":false},{"title":"EventBusAutoBow.java <span style='color:#111;'> 596B </span>","children":null,"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":true},{"title":".gitignore <span style='color:#111;'> 7B </span>","children":null,"spread":false},{"title":"build.gradle <span style='color:#111;'> 864B </span>","children":null,"spread":false},{"title":"proguard-rules.pro <span style='color:#111;'> 1.13KB </span>","children":null,"spread":false}],"spread":true},{"title":"build.gradle <span style='color:#111;'> 597B </span>","children":null,"spread":false}],"spread":false}],"spread":true}]

评论信息

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明