Dagger2的简单使用

来源:互联网 发布:matlab cell数组 拼接 编辑:程序博客网 时间:2024/05/16 02:49

解耦和方式

1、利用配置文件,使用反射获取到需要加载的对象。

2、设计模式:单例、工厂、观察者……

Dagger2简介

1、什么是Dagger2?

Dagger是为Android和Java平台提供的在编译时进行依赖注入的框架。

编译时:编辑时生成代码(rebulid),我们完成所需对象的注入。(假设使用反射,应该是运行时起作用)。

2、为什么使用Dagger2?

Dagger2解决了基于反射带来的开发和性能上的问题。

一、引入配置

1、添加dagger2的依赖

compile'com.google.dagger:dagger:2.6'//dagger公用api

apt'com.google.dagger:dagger-compiler:2.0.2'//指定注解处理器

provided'org.glassfish:javax.annotation:10.0-b28'//添加android缺失的部分javax注解

2、编译时生成代码的插件配置(android-apt)

project的gradle中添加

buildscript{

dependencies {

classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'

}

}

apt插件的使用

modle的gradle中添加

applyplugin: 'com.neenbedankt.android-apt'

关联Dagger2

dependencies {

apt 'com.google.dagger:dagger-compiler:2.6'

}

操作步骤

目标:替换掉presenter = new MainActivityPresenter(this);

第一步:指定要注入的目标

@Inject

MainActivityPresenterpresenter;

第二步:将new MainActivityPresenter(activity)代码放到指定的方法中

@Module

public classMainModule {

privateMainActivityactivity;

publicMainModule(MainActivity activity) {

this.activity= activity;

}

@Provides

publicMainActivityPresenterprovideMainActivity() {

return newMainActivityPresenter(activity);

}

第三步:建立activity和module建立关系(=)

@Component(modules= MainModule.class)

public interfaceMainActivityComponent {

voidin(MainActivity activity);

}

第四步:Rebuild Project

第五步:

DaggerMainActivityComponent component = (DaggerMainActivityComponent) DaggerMainActivityComponent.builder()

.mainModule(newMainModule(this))

.build();

component.in(this);

深入理解Dagger:

在操作中会使用到@Inject、@Module、@Provides、@Conponent注解,那么他们分别在完成什么工作?

MainActivityPresenter  presenter            =              new MainActivityPresenter(this);

@Inject                                       @Conponent                       @Module  @Provides


原创粉丝点击