简单使用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之间的交互


简单使用Dagger2_第1张图片
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][email protected]](http://upload-images.jianshu.io/upload_images/3156973-14c197fea4cf1718.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
在dagger包的component包下创建类MainActivityComponent

简单使用Dagger2_第2张图片
image.png

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

简单使用Dagger2_第3张图片
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/

你可能感兴趣的:(简单使用Dagger2)