
本文共 3598 字,大约阅读时间需要 11 分钟。
Dagger2���������������������������������������������������������
���������������������������������������������������������������������������������Dagger2���������������������������������������������������������������������������������������������
- ������������
- @Inject������������
- ������������������
- Component���Module���������������
- ������������������������������
- Module���Component���������������
���������������Dagger2������������������������������������������
<pre>implementation 'com.google.dagger:dagger:2.17' annotationProcessor 'com.google.dagger:dagger-compiler:2.17'</pre>
������������������������������������build.gradle������������
���������������������������@Inject���������Student���������������
<pre>import javax.inject.Inject;
public class Student {
@Inject public Student() {}
}</pre>
������������������������������������ap_generated_sources���������������������������������Student_Factory���
���������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���������
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���������������
������������������������������������������������������������������������������������������new������������������������������������������������������new������������������������������������������������������������������������
<div>������������������������������������������1000���������������Student���������������������������������������new Student()������������������Student������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������</div>
������������������������������������������������������������������������������������������������
<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���������������������������������������
发表评论
最新留言
关于作者
