Dagger2 简单入门三部曲(一)——是什么?
Dagger2 简单入门三部曲(二)——为什么使用?
Dagger2 简单入门三部曲(三)——怎么使用?
dagger2
的使用在前面几篇文章已经介绍过了
这篇文章主要介绍dagger2
的@Module
和@Provides
的使用。
先来回顾这两个注解的作用:@Module
的出现是为了解决@Inject
不是使用的场景,比如我们使用第三方库,或者是别人的SDK
,在使用别人的东西我们是不太可能去修改的,所以@Inject
就使用不上了,dagger
为了解决这个问题推出了 @module
,而@Providers
是标注 Module
中能够提供实例化对象的方法。
这么描述太抽象了,直接来代码演示吧。
假设我们有个第三方的类ThirdBean
。
伪代码如下:
public class ThirdBean {
public ThirdBean() {}
public void showToast(String str){
Log.e("ThirdBean", "showToast: str==============>"+str );
}
}
我们使用它是通过new ThirdBean()
来实现,但是我们都使用了dagger
了就不用再去new
一个对象了 。
我们可以这样做:创建一个xxxxModule
的类,然后用@Module
去注解,再声明一个返回需要实例化对象的方法,用@Provides
去注解,最后声明一个接口xxxComponent
,用@Component
去注解。
伪代码如下:
@Module
public class DaggerModule {
@Provides
ThridBean providerThirdBean(){
return new ThirdBean();
}
}
@Component(modules = {DaggerModule.class})
public interface MatchComponent {
void mainActivityInject(MainActivity activity);
}
在完成以上步骤之后rebuild project
,即可使用了。
按照惯例还是先使用@Inject
来注解该对象,然后利用dagger2
自动生成的代码来实例化该对象,最后就是调用该对象的方法测试能否调用成功。
伪代码如下:
@Inject
public ThridBean thridBean;
DaggerMatchComponent.create().mainActivityInject(MainActivity.this);
thridBean.showToast("你好 module ");
本文完~,欢迎你留言和我一起学习谈论。
网友评论