Dagger2 @Module @Provide 的简单使用

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 ");

本文完~,欢迎你留言和我一起学习谈论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_龙衣

赏杯快乐水喝喝

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值