Dagger2简单使用

Dagger2是Dagger的升级版,是一个依赖注入框架(依赖注入是什么,自行百度)

如何使用呢?

1.导入

//一定要添加dagger2的annotationProcessor!
   annotationProcessor 'com.google.dagger:dagger-compiler:2.11' 
   compile 'com.google.dagger:dagger-android:2.11'
// if you use the support libraries
   compile 'com.google.dagger:dagger-android-support:2.11' 
   annotationProcessor 'com.google.dagger:dagger-android-processor:2.11'

2.实现

先记住这个注解

  • @Module:作为实例对象的容器。
  • @Provides:标注能够提供实例化对象的方法。
  • @Component:作为桥梁,注入对象的通道。
  • @Inject:需要注入的方法

不知道什么意思,没有关系,继续看。 

dagger将程序分为三部分:

- 实例化部分:对象的实例化。类似于容器,将类的实例放在容器里。 
- 调用者:需要实例化对象的类。 
- 沟通桥梁:利用Dagger2中的一些API 将两者联系

(1)实例化部分

@Module   //提供依赖对象的实例
public class MainModule {

    @Provides
        // 关键字,标明该方法提供依赖对象
    XX providerXX(){
        //提供XX对象

        return new XX();
    }
}

    (2)  沟通桥梁

@Component(modules = MainModule.class)  // 作为桥梁,沟通调用者和依赖对象库
public interface MainComponent {

    //定义注入的方法
    void inject(MainActivity activity);

}

   (3)调用者

public class MainActivity extends AppCompatActivity {

    @Inject   //标明需要注入的对象
    XX xx;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 构造桥梁对象
        MainComponent component = DaggerMainComponent.builder().build();

        //注入
        component.inject(this);
    }
}

XX 是创建的实体类;

DaggerMainComponent 是根据 MainComponent 自动生成的调用类;

3.调用流程

  • 创建Component(桥梁),并调用注入方法。   
  • 查找当前类中带有@Inject的成员变量。
  • 根据成员变量的类型从Module中查找哪个有@Provides注解的方法返回值为当前类型。

到此结束。。在实现过程中,发现2.11以外的版本无法编译,不知道什么原因,如果有知道的大牛请@,谢谢 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这里提供一个简单的 Android Dagger2 的案例 demo,使用 Dagger2 实现依赖注入,实现了一个简单的计算器功能。 首先,在 build.gradle 中添加依赖: ``` dependencies { implementation 'com.google.dagger:dagger:2.x' annotationProcessor 'com.google.dagger:dagger-compiler:2.x' } ``` 然后,定义依赖关系。在这个例子中,我们定义了两个依赖:Calculator 和 CalculatorModule。Calculator 是一个接口,CalculatorModule 是一个模块,其中包含了用于实例化 Calculator 对象的方法。 ``` public interface Calculator { int add(int a, int b); } @Module public class CalculatorModule { @Provides Calculator provideCalculator() { return new CalculatorImpl(); } } ``` 其中,CalculatorImpl 是 Calculator 接口的实现类,用于实现 add 方法。 ``` public class CalculatorImpl implements Calculator { @Override public int add(int a, int b) { return a + b; } } ``` 在 Activity 中,我们需要使用 Calculator 对象,可以通过 @Inject 注解实现依赖注入。 ``` public class MainActivity extends AppCompatActivity { @Inject Calculator calculator; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DaggerCalculatorComponent.create().inject(this); int result = calculator.add(1, 2); Toast.makeText(this, "1 + 2 = " + result, Toast.LENGTH_SHORT).show(); } } ``` 其中,DaggerCalculatorComponent 是 Dagger2 自动生成的 Component 类,用于创建 Calculator 对象,并注入到 MainActivity 中。 最后,我们需要定义一个接口,用于将 CalculatorModule 和 MainActivity 连接起来。 ``` @Component(modules = {CalculatorModule.class}) public interface CalculatorComponent { void inject(MainActivity activity); } ``` 以上就是 Android Dagger2 的一个简单 demo。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值