教你三分钟学会使用Dagger2

前言:

我们不讨论Dagger2,这篇文章旨在教你如何快速的学会使用Dagger2。

Dagger2配置

//project的build.gradle
dependencies {
   classpath'com.android.tools.build:gradle:3.0.1'
   classpath'com.neenbedankt.gradle.plugins:android-apt:1.8'//添加apt插件
}
//module的build.gradle
dependencies {
compile'com.google.dagger:dagger-android:2.13'
compile'com.google.dagger:dagger-android-support:2.13'
annotationProcessor'com.google.dagger:dagger-android-processor:2.13'
annotationProcessor'com.google.dagger:dagger-compiler:2.13'
}

接下来我们写一个极为简单的Dagger2例子,新建一个工程,把一个对象注入到MainActivity中

一、写一个测试类,此类是需要被注入的对象

public class Test{
    public void method(){
       Log.e("test","success");
  }
 }

二、编写一个Module

@Module
public class MainActivityModule{
@Provides
public Test provideTest(){
return new Test();
}
}

简单的讲下Module的作用:
生成我们所需要的注入对象,上面的provideTest()方法就会生成Test对象,然后注入到目标位置
注意:
1.类必须要用@Module来标明注解
2.用@Provides注解的函数需要以provide开头,后面接什么内容都可以

三、编写Component

@Component(modules = MainActivityModule.class)
public interface MainActivityComponent {
    void inject(MainActivity activity);
}

编写的这个Component需要用@Component注解来标识,同时声明了modules
inject里面参数是申明你注解到的目标对象

四、Build-->Make Project 编译
apt会自动生成一个以Dagger开头的Component,我们上面写的是MainActivityComponent,生成了类名就为DaggerMainActivityComponent。这个类我们可直接调用

五、注入到目标对象中(MainActivity)

public class MainActivity extends AppCompatActivity {
    //注入
    @Inject 
    Test test;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //使用Dagger2形成关联
         DaggerMainActivityComponent.builder().mainActivityModule(new MainActivityModule()).build().inject(this);
         test.method(); //测试
    }
}

你可能感兴趣的:(教你三分钟学会使用Dagger2)