开源项目的依赖注入

依赖注入概念

依赖(Dependency)
• ClassA中需要ClassB,通常我们在A的代码中new一个ClassB。
• 采用依赖注入技术之后,A不再需要直接new一个ClassB,它只需要定义一个私有的B对象,由相关的框架或者容
器在外部把B实例化,再注入到A;
public class MainActivity extends Activity {
private ProductBean mProduct;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//mProduct = new ProductBean("1", "鞋子");
Utils.injectProduct(this);
 }
}

依赖注入(DI:Dependency Injection):

ClassA的运行依赖于ClassB,如果ClassB对象的获取需要ClassA自己去实现的话,常常会导致代码高度耦
合。反过来,如果ClassB对象的获取是由外部容器注入的,这个“依赖注入”的过程常常被称为控制反转
(IOC:Inversion of Control), 就是获取对象的方式变了依赖注入是实现控制反转的方式之一(另一方式是依赖查
找),目的就是为了让调用者和被调用者之间解耦可以注入依赖的模拟实现,使得测试变得更加简单.

依赖注入方式:

• set方法。给外部容器的一个接口,传入依赖的对象。
• 基于构造函数。在新建对象时,传入依赖的对象。
• 基于Java的注解(Annotation)功能

ButterKnife黄油刀

• 主页 https://github.com/JakeWharton/butterknife
• 用途: 主要用来简化各种初始化控件的操作
配置:
在项目根目录下build.gradle文件中添加apt编译插件:
buildscript {
repositories {
mavenCentral(); 
jcenter();
 }
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
 }
}在app/build.gradle文件中dependencies节点添加如下代码
apply plugin: 'android-apt'
// 应用apt插件
dependencies {
compile 'com.jakewharton:butterknife:8.1.0'
apt 'com.jakewharton:butterknife-compiler:8.1.0'
}
安装Android ButterKnife Zelezny插件, 安装成功以后重启Android Studio

AndroidAnnotations

• 主页: http://androidannotations.org/
• 用途:
 1. 使用依赖注入Views,extras,System Service,resources
 2. 简化线程模型
 3. 事件绑定
 4. REST Client
配置: 在project/build.gradle 文件中按下图所示添加代码:
buildscript {
repositories {
mavenCentral() 
// 添加这一行
jcenter()
 }
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' // 添加这一行
 }
}在app/build.gradle 文件中按下图所示添加代码:
apply plugin: 'android-apt'
apt {
arguments {
androidManifestFile variant.outputs[0]?.processResources?.manifestFile
 }
}
dependencies {
apt "org.androidannotations:androidannotations:4.0.0"
compile "org.androidannotations:androidannotations-api:4.0.0"
}
注入View,注入Click事件。注意view和click事件不能是private
1. 注入系统service,设置全屏,设置WindowFeature
2. 简化线程模型
@Background
@UiThread

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值