Dagger初体验0.1

2021-04-21  本文已影响0人  wzg_gitee

如果文章对你有所帮助请点个赞,写文章需要勇气,也需要得到肯定,如果所有人都只知道取而没有舍,将不会有人开源与分享。

我是wzg,也是墨。

Dagger2使用0.2快捷链接:
https://www.jianshu.com/p/62f755228c98

Dagger2了解过的人都说是学习成本比较高的,相对于大对数项目都使用不上。
但是推出就一定有他的道理,爱学习技术的我就会各种逛github,终于有了对Dagger2的一点点使用见解。

1.首先当然是导入依赖,可以根据自己喜欢的版本使用

    // dagger2
    implementation 'com.google.dagger:dagger:2.23.1'
    annotationProcessor 'com.google.dagger:dagger-compiler:2.23.1'

2.注解介绍

这里描述的紧代表个人对注解的理解

@Inject :表面意思是就是注入

@Component :用于连接module的桥梁

@Provides :提供对应的实例

@Module :管理实例的容器


我的见解就是: ``需求方 <---> 中间商  <--->  生产商``


3.实例使用:

使用Dagger2的方式如何调用ApiService 的register()

public class ApiService {
        
    public void register() {
        LogR.logDateE("注册成功了");
    }
}

3.1 首先需要创建一个module容器得到实例(提供者)

@Module//标注当前类是module容器
public class RegModule {

    @Provides//提供实例
    public ApiService  provideApiService(){
        return  new ApiService();
    }
}

3.2 中间商的写法

//使用Component连接module
@Component(modules ={RegModule.class })
public interface RegComponent {

    //通常写法:内部是使用者
    void   inject(MainActivity  mainActivity);
}

3.3 需求方如何使用?看代码

注意ApiService并没有直接new实例化对象,而是使用Dagger2注入生成代码管理实例关联。

DaggerRegComponent是写好Component之后reBuild才生成的对象。

public class MainActivity extends AppCompatActivity {


    /*使用了Inject 就会向 UserComponent内去找对象*/
    @Inject
    ApiService  mApiService;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        /* DaggerRegComponent  是项目reBuild后生成的
         *
         * 关联接口UserComponent
         */
        DaggerRegComponent.create().inject(this);

        mApiService.register();
    }
}

4.运行项目出现一下代表你已经学会了本文的所有,谢谢你的星星or爱心。

image.png

到此已经结束,希望本文对你有所帮助。如果后续有时间将会继续写下去,帮助需要的伙伴把Dagger2这块硬骨头啃下去。

上一篇 下一篇

猜你喜欢

热点阅读