初次了解Dagger2

来源:互联网 发布:linux 磁力 下载工具 编辑:程序博客网 时间:2024/06/15 02:41

了解一个新东西,从最简单的demo看起

来源

//首先添加依赖apply plugin: 'com.android.application'apply plugin: 'com.neenbedankt.android-apt' // 注释处理buildscript {    repositories {        jcenter()    }    dependencies {        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'    }}android {    compileSdkVersion 23    buildToolsVersion "23.0.2"    packagingOptions {        exclude 'META-INF/services/javax.annotation.processing.Processor'    }    defaultConfig {        applicationId "com.cq.demo.dagger2demo"        minSdkVersion 19        targetSdkVersion 23        versionCode 1        versionName "1.0"    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }}dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    testCompile 'junit:junit:4.12'    compile 'com.android.support:appcompat-v7:23.2.0'    provided 'javax.annotation:javax.annotation-api:1.2'    apt 'com.google.dagger:dagger-compiler:2.0.2'    compile 'com.google.dagger:dagger:2.0.2'}
//新建一个Android 项目public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }}//新建一个实体类public class Person {    private String name;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Person(String name) {        this.name = name;    }}//新建一个Module@Modulepublic class ActivityModule {    //前缀必须为 @Provides     @Provides Person providePeron(){        return new Person("dd");    }}//新建一个component@Singleton //表示这个函数的scope是全局@Component(modules = ActivityModule.class)public interface ActivityComponent {    void inject(MainActivity mainActivity);//传入消耗依赖的参数}

然后编译一下,Dagger2会自动生成DaggerActivityComponent

最后在Activity里面调用

public class MainActivity extends AppCompatActivity {    private ActivityComponent activityComponent;    @Inject Person person;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        activityComponent=DaggerActivityComponent.builder().activityModule(new ActivityModule()).build();        activityComponent.inject(this);        Log.e("-->>",person.getName());    }}

然后就可以看到打印出来的内容了

0 0
原创粉丝点击