简单使用Dagger2

Dagger是为Android和Java平台提供的在编译时进行依赖注入的框架,Dagger2解决了基于反射带来的开发和性能上的问题。在MVP中Dagger2主要用于做界面和业务之间的隔离,即V-- Dagger2--P,目的是为了解耦.
Dagger2 GitHub地址:https://github.com/google/dagger
第一步在项目中添加dagger2:

image.png

然后同步,添加搞定.
第二步就是简单使用,本文只是简单使用@Inject、@Module、@Provides、@Conponent注解,更深入的请参考本文后的链接(水平太菜,也讲不出来).
1.一般实现View与Presenter之间的交互


image.png

简单的结构目录.
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().

image.png

在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

image.png

最后在MainActivity的onCreate的方法中调用

image.png

只是一个简单的使用,写的简单的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/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,647评论 25 708
  • 部分内容参考自:[Android]使用Dagger 2依赖注入 - DI介绍(翻译)[Android]使用Dagg...
    AItsuki阅读 47,790评论 66 356
  • 一部为了搞笑而搞笑的电影,混合了很多杂七杂八的元素,剧情牵强而逻辑不通,用互联网语言说是做足了SEO关键词,...
    朩旁阅读 452评论 0 0
  • 小雅:很长时间里一直觉得艰难,因与内心的自由相悖,无法甘愿。这种姿态很尴尬,处于因外力影响而自己设定的压力之下,又...
    甘草子的简书阅读 293评论 3 1
  • 说起爱美这回事,我开窍的较晚。当我为学会擦BB霜这种“高级装扮”技巧暗暗自得的时候,才发现其他女生宿舍里成排成列的...
    幸福的西瓜君阅读 348评论 0 2