UDN-企业互联网技术人气社区

板块导航

浏览  : 1478
回复  : 0

[干货] Arrow--轻量级的Android DI 库

[复制链接]
开花包的头像 楼主
发表于 2017-1-1 23:03:52 | 显示全部楼层 |阅读模式
  Arrow 是一个轻量级的Android DI 库,没有额外的引用。

  为什么

  最流行的Android DI框架中,Roboguice已经不再维护了,Dagger2使用有点复杂,需要写component interface(所以我写了一个自动生成component interface的库Dagger2Plus),而且Dagger2使用代码生成,对于有代码洁癖的人来说不太喜欢。Arrow使用反射,在目前动不动就8核10核2G3G的硬件环境下,反射带来的性能缺陷不再明显,作为个人来说还是能接受的。

  特性

  1、@Inject

  对象注入

  2、@Singleton

  单例对象注入

  3、Provider 接口

  处理循环依赖

  例如:

  1.   public class A {

  2.   final B b;

  3.   @Inject

  4.   public A(B b) {

  5.   this.b = b;

  6.   }

  7.   public String print() {

  8.   return "I am A";

  9.   }

  10.   }

  11.   public class B {

  12.   Provider a;

  13.   @Inject

  14.   public B(Provider a) {

  15.   this.a = a;

  16.   }

  17.   }
复制代码


  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

  用法

  1.   repositories {

  2.   maven {

  3.   url "https://jitpack.io"

  4.   }

  5.   }

  6.   dependencies {

  7.   compile 'com.github.MasonLiuChn:Arrow:1.0.0'

  8.   }
复制代码

  1.   Arrow.init(Application application);

  2.   Arrow.inject(Object object);

  3.   Arrow.injectContentView(Object fragment, LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState)
复制代码


  其他

  之前一直有个做App热更新的想法,是基于DroidPlugin是的全量插件化,最近终于有时间把代码写好了,见另一篇文章FullPlugin

  Contact me:

  Blog:http://www.masonliu.com

  Email:MasonLiuChn@gmail.com

原文作者:佚名  来源:开发者头条

相关帖子

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部