Dagger2入门系列一:基础使用
发布日期:2021-05-14 17:56:14 浏览次数:24 分类:精选文章

本文共 3598 字,大约阅读时间需要 11 分钟。

Dagger2���������������������������������������������������������

  • ������������������������
  • ���������������������������������������������������������������������������������Dagger2���������������������������������������������������������������������������������������������

    1. ������������
    2. ���������������Dagger2������������������������������������������

      <pre>implementation 'com.google.dagger:dagger:2.17' annotationProcessor 'com.google.dagger:dagger-compiler:2.17'</pre>

      ������������������������������������build.gradle������������

      1. @Inject������������
      2. ���������������������������@Inject���������Student���������������

        <pre>import javax.inject.Inject;

        public class Student {

        @Inject
        public Student() {}

        }</pre>

        ������������������������������������ap_generated_sources���������������������������������Student_Factory���

        1. ������������������
        2. ���������Student_Factory������������������������������Student���������

          <pre>Student student1 = Student_Factory.create().get(); LogUtils.e(student1.toString()); Student student2 = Student_Factory.newStudent(); LogUtils.e(student2.toString()); Student student3 = Student_Factory.provideInstance(); LogUtils.e(student3.toString());</pre>

          ������������������������ these three������������������Student���������

          1. Component���Module���������������
          2. Component���������Module���������������������������

            <pre>import dagger.Component;

            @Component(modules = Test1Module.class) public interface Test1Component {

            void inject(Test1Activity activity);

            }</pre>

            <pre>import dagger.Module;

            @Module public class Test1Module {

            private Test1Activity activity;
            Test1Module(Test1Activity activity) {
            this.activity = activity;
            }

            }</pre>

            ���Activity���������������������������������������������

            <pre>public class Test1Activity extends AppCompatActivity {

            @Inject
            Student student;
            private void initDatas() {
            DaggerTest1Component.builder()
            .test1Module(new Test1Module(this))
            .build()
            .inject(this);
            }

            }</pre>

            ������Button������������������������Student���������������

            1. ������������������������������
            2. ������������������������������������������������������������������������������������������new������������������������������������������������������new������������������������������������������������������������������������

              <div>������������������������������������������1000���������������Student���������������������������������������new Student()������������������Student������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������</div>

              ������������������������������������������������������������������������������������������������

              1. Module���Component���������������
              2. <div>������������������������������������Component���������������������������������������������������������������������Module���������������������������������������������������������������������������������Module���������@Provides���������������������������������������������������������������</div>

                ���������������������������������@Reach���������@Inject������������������Module������Student���������

                <pre>public class Student {

                public Student() {}

                }</pre>

                <pre>@Module public class Test1Module {

                private Test1Activity activity;
                Test1Module(Test1Activity activity) {
                this.activity = activity;
                }
                @Provides
                Student provideStudent() {
                return new Student();
                }

                }</pre>

                ���������������������Module���������������������������������������

    上一篇:Dagger2入门系列二:Module&Component源码分析
    下一篇:Butterknife源码分析

    发表评论

    最新留言

    感谢大佬
    [***.8.128.20]2025年04月11日 15时51分15秒