Dagger2+MVP
来源:互联网 发布:恋夜秀场源码 编辑:程序博客网 时间:2024/06/04 00:24
1,添加dependences{
compile 'com.jakewharton:butterknife:8.8.1'annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
compile 'com.google.dagger:dagger:2.6'annotationProcessor 'com.google.dagger:dagger-compiler:2.6'
}
2,代码结构:
--DaggerDemo --di --DaggerModule --DaggerComponent --mvp --DaggerModel --DaggerView --DaggerPresenter --DaggerActivity
3, DaggerView对应代码:
public interface DaggerView { void showText(String s);}4, DaggerModel对应代码:
public class DaggerModel { public static String getText(){ return "hello"; }}5,DaggerPresenter对应代码:
public class DaggerPresenter { DaggerView mDaggerView; @Inject public DaggerPresenter(DaggerView daggerView){ mDaggerView=daggerView; } public void showText(){ mDaggerView.showText(DaggerModel.getText()); }}
6,DaggerActivity对应代码:
public class DaggerActivity extends AppCompatActivity implements DaggerView { @BindView(R.id.text1) TextView mTextView; @Inject DaggerPresenter mDaggerPresenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_dagger); ButterKnife.bind(this); DaggerDaggerComponent.builder() .daggerModule(new DaggerModule(this)) .build() .inject(this);// mDaggerPresenter=new DaggerPresenter(this); mDaggerPresenter.showText(); } @Override public void showText(String s) { mTextView.setText(s); }}
说明:Presenter里的构造方法的@Inject可看作依赖注入的依赖对象,而Activity中成员变量的@Inject可看作依赖注入的注入目的地,两者通过@Component 实现注入
7,DaggerModule对应代码:
@Modulepublic class DaggerModule { private final DaggerView mDaggerView; public DaggerModule(DaggerView daggerView){ mDaggerView=daggerView; } @Provides DaggerView provideDaggerView(){ return mDaggerView; }}
8,DaggerComponent对应代码:
@Component(modules = DaggerModule.class)public interface DaggerComponent { void inject(DaggerActivity daggerActivity);}
说明:实际上 ,dependency injector只是取代new方法
具体步骤:1,先在需要注入依赖的class里声明成员变量并使用@Inject标注
2,@Module中的@Providers提供的对像 和 @Inject标注的对象的构造方法 都可以提供依赖(相当于注射剂),前者优先
3,@Component负责从中寻找<1>中所需对象,如果在注射剂中寻找的对象有依赖对象,则重复<2><3>
阅读全文
0 0
- Dagger2+MVP
- Dagger2+mvp
- MVP+Dagger2+Retrofit+Rxjava
- MVP+RxJava+Retrofit2+Dagger2
- MVP+Dagger2架构详解
- android:mvp+dagger2解析
- RxJava+Retrofit+MVP+Dagger2
- Dagger2实现MVP模式
- RxJava+Retrofit+MVP+Dagger2
- Google官方MVP+Dagger2架构 dagger2详解
- Dagger2在MVP中的应用(Dagger2+Retorfit+MVP)
- Dagger2和MVP的结合
- MVP-Dagger2-Rxjava2-Retrofit整合
- android dagger2搭建mvp架构
- Android MVP+Dagger2使用教程
- MVP+Dagger2+Retrofit2.0+Rxjava
- MVP+Dagger2解耦开发
- 当 Dagger2 应用在 MVP 框架中
- iPhone真机控件获取 app-inspector
- 注释转换
- Android-25种开源炫酷动画框架
- helloworld
- python web py入门-4-请求处理(上)
- Dagger2+MVP
- 解决getOutputStream() has already been called for this response
- centos源码安装php7.1.1
- springmvc中的文件上传
- 数据库——PL/SQL(一)
- shell——入门笔记
- 九度[1028]-继续畅通工程
- iBATIS SQL Maps之Result Map属性。
- springboot搭建初始@SpringBootApplication无法引入的