Dagger2用法整理

偶尔善良 提交于 2019-12-10 11:17:12

核心理念

依靠注解编译时生成额外的控制类操作目标对象进行注入。

  • 注入物,比如药(medicine)
  • 目标对象——屁股(ass)
  • 桥梁——针管(needle)

基本注入

集成

  • java
implementation 'com.google.dagger:dagger:2.x'
annotationProcessor 'com.google.dagger:dagger-compiler:2.x'
  • kotlin
implementation 'com.google.dagger:dagger:2.x'
kapt 'com.google.dagger:dagger-compiler:2.x'

版本号在这里查看。

上来就干

  • 注入物
public class Medicine {

    private String name;

    @Inject  //用@Inject标注构造方法
    Medicine(){
        name = "青霉素";
    }
}
  • needle
@Component  //用Component
public interface Needle {  //注意这是个interface

    void inject(AssActivity activity);
}

编译之后会自动生成实现类DaggerNeedle,并且添加相应的方法。

  • 屁股
public class AssActivity extends AppCompatActivity {

    @Inject
    Medicine medicine;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
		
	DaggerNeedle.create().inject(this);//通过生成的针管实现类执行注入
		
        setContentView(R.layout.activity_main);
    }
}

运行后发现 Ass中的medicine对象不为null,说明注入成功!

干的漂亮

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!