Dagger2特别提供了一个针对 Android 使用的简化流程。

1.给你的Activity 写一个 Subcomponent,应引用所需的 Module

@Subcomponent(modules = NetModule.class)public interface MainActivitySubcomponent extends AndroidInjector {    @Subcomponent.Builder    abstract class Builder extends AndroidInjector.Builder{}}

2.写一个 Module 来使用这个 Subcomponent

@Module(subcomponents = MainActivitySubcomponent.class)public abstract class MainActivityModule {    @Binds    @IntoMap    @ActivityKey(MainActivity.class)    abstract AndroidInjector.Factory<? extends Activity>    bindMainActivityInjectorFactory(MainActivitySubcomponent.Builder builder);}

3.需要一个 Top-Level Component 来进行注入,注意,一定要写AndroidSupportInjectionModule,以及上面写的 ActivityModule

@Component(modules = {AndroidSupportInjectionModule.class,MainActivityModule.class,})public interface AppComponent {    public void inject(MyApplication app);}

4.最后,修改你的 Application,实现HasActivityInjector接口,并在其中调用 AppComponent 进行注入

public class MyApplication extends Application implements HasActivityInjector {    @Inject    DispatchingAndroidInjector dispatchingActivityInjector;    @Override    public void onCreate() {        super.onCreate();        DaggerAppComponent.create().inject(this);    }    @Override    public AndroidInjector activityInjector() {        return dispatchingActivityInjector;    }}

5.最后一步,在你的 Activity 生命周期中调用注入方法

public class MainActivity extends AppCompatActivity {    @Inject    OkHttp okHttp;    @Override    protected void onCreate(Bundle savedInstanceState) {        AndroidInjection.inject(this);                super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        okHttp.getNet();    }}

之后添加新的 Activity 只需要重复1,2步,并在AppComponent中加入新建的 Module 即可。

是不是觉得很复杂,没关系,还可以写的更简单:

@Moduleabstract class MainActivityModule {    @MyScope    @ContributesAndroidInjector(modules = {ComputerModule.class})    abstract MainActivity contributeYourActivityInjector();}

用上面的代码替换1,2步的内容即可。这种写法适用于 Subcomponent 中不需要任何其他内容的情况。

 

 

 

 

 

 

更多相关文章

  1. Android中用Toast.cancel()方法优化toast内容的显示
  2. android编译系统的makefile文件Android.mk写法
  3. Android实现动态自动匹配输入内容功能
  4. Android Studio - 第四十六期 不会ANR的轮播写法
  5. android EditText 实时监听输入框的内容
  6. android中app升级的两种常用写法
  7. Android - AutoCompleteTextView (输入框动态匹配内容)
  8. android按钮监听器的写法
  9. Android 使用ContentProvider(内容提供者)共享数据

随机推荐

  1. android 数据库操作 (非ContentProvider)
  2. android java 分享功能实现,Cocos2d-x3.3
  3. Ubuntu上adb找不到设备问题小结
  4. 关于 Android(安卓)进程保活,你所需要知道
  5. Android(安卓)Touch事件传递机制解析
  6. android init进程--init.rc解析过程与执
  7. 深入理解Android工程的编译过程
  8. 【Android】Android(安卓)Studio 使用第
  9. Android(安卓)无障碍辅助功能Accessibili
  10. 【Android(安卓)开发入门】我为什么要在A