前言
本文章尝试从零开始导入Dagger2的角度讲述使用Dagger2的导入和使用。将使用AndroidStudio新建Android项目导入Dagger2并运行起来。
配置
首先新建AndroidStudio项目,并在项目app模块下的build.gradle文件的dependencies项内添加以下代码:
compile "javax.annotation:jsr250-api:1.0"
compile 'com.google.dagger:dagger:2.0'
annotationProcessor 'com.google.dagger:dagger-compiler:2.0'
分别是导入javax注解和Dagger2的相关库。
说明
Dagger2的最基本的注解是@Inject、@Provides、@Module和@Component,后面我们会用上这4个注解,我们先看一下这几个注解分别代表的意思。以下内容为个人理解。大家可以看看官方网站的解释https://google.github.io/dagger/users-guide。本人英文水平不足,可能理解有错,望大家指正包涵。
@Inject一般用于注解构造方法或者变量。当其用于注解某个构造方法,而Dagger需要创建该类的实例的时候,Dagger就会调用使用这个注解的构造方法来创建实例。当其用于注解变量的时候,表示该变量将会获得Dagger的注入。@Module用于注解类。当我们在某个类上添加此注解的时候,表示此类将会为注解了@Inject的变量提供内容。@Provides用于注解方法,这些方法会存在于@Module注解类中为注解了@Inject的变量提供内容。被注解的方法的方法名一般以provide为前缀,以要为其提供内容的变量的变量名为后缀。但是匹配依赖并不是通过方法名或者变量名,而是通过返回值类型来匹配的。所以同一个@Module注解类中的@Provides注解的不同方法不能返回相同的类型。@Component用于注解接口。Dagger会为有此注解的接口生成一个实现类,此实现类已Dagger为类名前缀,后面跟着接口名。实现类会充当工厂类,传递内容。
应用
假设我们要使用Dagger2为MainActivity的变量提供注入,那么我们将先创建几个类及接口如下:
MainActivityModule类:
import dagger.Module;
import dagger.Provides;
@Module
public class MainActivityModule {
@Provides
String provideTitle() {
return "Hello Dagger2";
}
}
MainActivityComponent接口:
import dagger.Component;
@Component(modules = MainActivityModule.class)
public interface MainActivityComponent {
void inject(MainActivity act);
}
MainActivity:
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import javax.inject.Inject;
public class MainActivity extends Activity {
public TextView tv;
@Inject
public String title;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DaggerMainActivityComponent.create().inject(this);
tv = (TextView) findViewById(R.id.tv);
tv.setText(title);
}
}
当我们为接口MainActivityComponent添加@Component注释并在其参数中设置modules之后,再Rebuild一下工程,Dagger会为我们生成DaggerMainActivityComponent实现类。我们就可以在MainActivity中调用DaggerMainActivityComponent的create()方法或builder().build()方法创建实例并调用inject方法为MainActivity类的变量注入内容。
以上就是Dagger2的一个简单用例。
本文介绍了如何在Android Studio项目中引入Dagger2,包括配置步骤、主要注解的解释以及一个简单的应用示例,展示了Dagger2如何为MainActivity的变量提供依赖注入。

7376

被折叠的 条评论
为什么被折叠?



