Arrow--轻量级的Android DI 库
来源:互联网 发布:手游直播下什么软件 编辑:程序博客网 时间:2024/06/05 20:15
Arrow 是一个轻量级的Android DI 库,没有额外的引用。
为什么
最流行的Android DI框架中,Roboguice已经不再维护了,Dagger2使用有点复杂,需要写component interface(所以我写了一个自动生成component interface的库Dagger2Plus),而且Dagger2使用代码生成,对于有代码洁癖的人来说不太喜欢。Arrow使用反射,在目前动不动就8核10核2G3G的硬件环境下,反射带来的性能缺陷不再明显,作为个人来说还是能接受的。
特性
1、@Inject
对象注入
2、@Singleton
单例对象注入
3、Provider 接口
处理循环依赖
例如:
public class A { final B b; @Inject public A(B b) { this.b = b; } public String print() { return "I am A"; }}public class B { Provider<A> a; @Inject public B(Provider<A> a) { this.a = a; }}
4、Application注入
后续加入各种Service Manager的注入
5、@OnClick
View点击事件处理
6、@ContentView
支持Activity和Fragment setContentView
7、@OnPostInject
Inject 结束后触发该函数
8、@InjectExtra
支持Activity和Fragment 注入Bundle
Arrow+DataBinding
使用DataBinding替代butterknife
Object的注入使用Arrow
源代码
https://github.com/MasonLiuChn/Arrow
用法
repositories { maven { url "https://jitpack.io" }}dependencies { compile 'com.github.MasonLiuChn:Arrow:1.0.0'}
Arrow.init(Application application);Arrow.inject(Object object);Arrow.injectContentView(Object fragment, LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState)
其他
之前一直有个做App热更新的想法,是基于DroidPlugin是的全量插件化,最近终于有时间把代码写好了,见另一篇文章FullPlugin
Contact me:
Blog:http://www.masonliu.com
Email:MasonLiuChn@gmail.com
0 0
- Arrow--轻量级的Android DI 库
- [DI] -- php写一个轻量级的容器
- Guice -- 可替代Spring的轻量级DI框架
- Guice:轻量级IOC/DI 容器
- es6 的arrow function
- Arrow
- 解读超轻量级DI容器-Guice与Spring框架的区别
- 解读超轻量级DI容器-Guice与Spring框架的区别
- android 轻量级曲线图的绘制
- Android中简单轻量级的数据缓存类库DCache
- 超轻量级DI容器框架Google Guice与Spring框架的区别教程详解及其demo代码片段分享
- 超轻量级DI容器框架Google Guice与Spring框架的区别教程详解及其demo代码片段分享
- android draw arrow on camera preview
- Android - ScrollView添加提示Arrow(箭头)
- android的轻量级数据保存类SharedPreferences
- [Android] SharedPreferences(轻量级的存储方式)
- android 超轻量级的ORM框架
- android下的轻量级Sqlite创建数据库
- bootstrap结合自定义css和内联布局测试
- MDT2012配置无人职守安装
- 数据类型
- 2016.12.17 2016年第四届湘潭大学新生趣味程序设计竞赛 B:Balance
- stm32串口下载出现端口搜索不到或者一直处于连接状态的问题解决办法
- Arrow--轻量级的Android DI 库
- JavaScript判断输入的数是不是素数
- 自学-Shiro的MD5加密及更加严格的盐值加密-08
- 47. Permutations II
- 通过串口在主机和开发板之间传送文件
- zjoi 2008 杀蚂蚁
- Linux配置java环境变量出错直接导致命令无效
- Android上实现一个简单的天气预报APP(三) 获取网络数据
- Python装饰器探究——多个装饰器执行顺序