目录
1.基本使用(不带module)
首先我们需要一个component进行桥梁,将@Inject 的对象自动装入其中,然后提供给activity使用。
/**
* AppComponent @Inject实例对象 和 activity的桥梁
*/
@Component
public interface AppComponent {
void inject(MainActivity activity);
}
@Inject提供实例对象
public class User {
public String name;
@Inject
public User(){
name = "mmm";
}
}
最后在activity中,进行装入:
@Inject
User mUser;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DaggerAppComponent.create().inject(this);
toastUtils.toast(this);
}
2.简单使用(带moudle)
如果是项目中的工具类,使用第一种方式很好处理,但是当我们使用第三方库的时候,就没有办法直接给Okhttp的构造函数上添加@Inject注解。这个时候我们需要使用moudle类进行中间处理。
public class OkHttp {
public void getNet(){
Log.i("OkHttp","请求网络");
}
}
module直接new出第三方对象
/**
* Module 模块 主要是用来直接new出我们要使用
* 但是无法在构造函数行添加 @Inject 的实例
*
*/
@Module
public class AppMoudle {
@Provides
OkHttp provideOkHttp(){
return new OkHttp();
}
}
然后在component中添加modle,放入其中
/**
* AppComponent @Inject实例对象 和 activity的桥梁
*/
@Component(modules = AppMoudle.class)
public interface AppComponent {
void inject(MainActivity activity);
}
3.一个component多moudle
@Component(modules = {AppMoudle.class,HttpMoudle.class})
public interface AppComponent {
void inject(MainActivity activity);
}
当AppComponent类有两个modules的时候,就会同时拥有两个modules类提供的实例对象。
4.moudle之间依赖
@Module(includes = HttpMoudle.class)
public class AppMoudle {
@Provides
User provideUser(){
return new User();
}
}
@Component(modules = {AppMoudle.class})
public interface AppComponent {
void inject(MainActivity activity);
}
当AppMoudle中依赖类HttpMoudle后,就可以直接使用HttpMoudle提供的实例了。