Dagger2的学习笔记

来源:互联网 发布:淘宝宝贝详情批量修改 编辑:程序博客网 时间:2024/04/27 18:56


一, 为什么要引入dagger2?


一句话 解耦,常见的解耦方式有 继承,单例设计, 依赖注入等.dagger2就属于最后一种. 


二, 在什么情况下引入dagger2?


android 开发MVC模式过于臃肿, V层 可以剥离一些逻辑出来,比如登录页面的登录逻辑可以用presenter展示, presenter对象可以new出来在调用login方法,实现登录,但是假设在其他页面还需要使用这个presenter则会导致new出多个对象, 使用dagger2一次注入,多次使用. 保证对象的唯一性.


三,  dagger2的使用方法.


1. 在项目的build.gradle文件中添加

首先应用注入

apply plugin: 'com.android.application'

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

2. 在工程的build.gradle文件中添加

buildscript {    repositories {        jcenter()    }    dependencies {        classpath 'com.android.tools.build:gradle:2.2.0'        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'        // NOTE: Do not place your application dependencies here; they belong        // in the individual module build.gradle files    }}

3. 开始使用 第一步 写一个注入接口

@Component(modules = LoginActivityModule.class)public interface LoginActivityComponent {    void in(LoginActivity loginActivity);}

4. 写一个注入接口中指向的module , 在module中把对象生成

@Modulepublic class LoginActivityModule {    LoginActivity mLoginActivity;    public LoginActivityModule(LoginActivity loginActivity) {        mLoginActivity = loginActivity;    }    @Provides    LoginActivityPresenter providerLoginActivityPresenter(){        return new LoginActivityPresenter(mLoginActivity);    }}

 5. 写好后就可以rebulid项目了,之后会生成一个daggerComponen类

@InjectLoginActivityPresenter mLoginActivityPresenter;

//使用dagger2生成presenter对象DaggerLoginActivityComponent.builder().loginActivityModule(new LoginActivityModule(this)).build().in(this);

6. 然后就可以使用presenter内部的方法了.

mLoginActivityPresenter.login(params);





0 0
原创粉丝点击