Dagger是为Android和Java平台提供的在编译时进行依赖注入的框架,Dagger2解决了基于反射带来的开发和性能上的问题。在MVP中Dagger2主要用于做界面和业务之间的隔离,即V-- Dagger2--P,目的是为了解耦.
Dagger2 GitHub地址:https://github.com/google/dagger
第一步在项目中添加dagger2:
然后同步,添加搞定.
第二步就是简单使用,本文只是简单使用@Inject、@Module、@Provides、@Conponent注解,更深入的请参考本文后的链接(水平太菜,也讲不出来).
1.一般实现View与Presenter之间的交互
简单的结构目录.
public class MainActiviityPresenter {
public void setData(){
Toast.makeText(MyApplication.getContext(),"我是Presenter中由Dagger2弹出的吐司",Toast.LENGTH_LONG).show();
}
}
在MainActiviityPresenter 类中只写了弹出Toast方法.
public class MainActivity extends AppCompatActivity {
MainActiviityPresenter mainActiviityPresenter = new MainActiviityPresenter();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mainActiviityPresenter.setData();
}
});
}
}
创建MainActiviityPresenter 的对象,对象调setData()方法,弹出Toast.
2.Dagger2利用注解实现View与Presenter之间的交互
创建对象new MainActiviityPresenter(),使Activity与Presenter耦合度增强,
Dagger2目的就是为了解耦,所以利用注解来取代new MainActiviityPresenter().
在dagger包的Module包下创建类MainActivityModule
![SBZQC(%VQ4XCW0]3@7LMXX4.png](http://upload-images.jianshu.io/upload_images/3156973-14c197fea4cf1718.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
在dagger包的component包下创建类MainActivityComponent
最后在MainActivity的onCreate的方法中调用
只是一个简单的使用,写的简单的Demo已上传GitHub,https://github.com/TWBfly/MyDagger2/tree/master
更深入的学习Dagger
http://www.jianshu.com/p/857a768aec4f
http://frogermcs.github.io/dependency-injection-with-dagger-2-the-api/