Dagger2的使用

1.解耦原因
• 组合关系:Activity中还有业务的引用
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mMainActivityPresenter = new MainActivityPresenter(this);

2.常见的解耦方式
• 利用配置文件,使用反射获取到需要加载的对象。
• 设计模式:单例、工厂、观察者……

3.注解回顾
a.注解本身是一个类,用于标注其他类或者方法的特性。
b.注解类有点像属性,可以多个使用,标注对象的功能。
c.生活中的例子
@Game,@Code
Student student1;

@Code,@Love(girlfriend = “xiaohong”)
Student student2;

Student{
String name;
Int age;
}

3.dagger2的使用
apt插件的安装:
1.在project的gradle中添加
buildscript {
dependencies {
classpath ‘com.neenbedankt.gradle.plugins:android-apt:1.8’
}
}
2.apt插件的使用
在modle的gradle中添加
apply plugin: ‘com.neenbedankt.android-apt’

3.添加dagger2的依赖
dependencies {
compile ‘com.google.dagger:dagger:2.6’
apt ‘com.google.dagger:dagger-compiler:2.6’
}

四个注解使用
@Module、@Provides、@Component、@Inject

@Module:标注对象创建的容器
@Module
public class MainActivityModule {

MainActivity mMainActivity;

public MainActivityModule(MainActivity mainActivity) {
    mMainActivity = mainActivity;
}

@Provides:标识需要创建的对象
MainActivityPresenter providerMainActivityPresenter(){
    return  new MainActivityPresenter(mMainActivity);
}

}

@Component:将创建好的对象与需要注入的对象组合到一起
@Component(modules = MainActivityModule.class)
public interface MainActivityComponent {
void in(MainActivity mainActivity);
}

@Inject
MainActivityPresenter mMainActivityPresenter;

最后赋值即可:
DaggerMainActivityComponent.builder().mainActivityModule(new MainActivityModule(this)).build().in(this);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值