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以外的版本無法編譯,不知道什麼原因,如果有知道的大牛請@,謝謝 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章