如何快速集成Dagger2让你的代码完全解耦

最近在研究Dagger2,他是为了配合MVP出现的,为了让你的业务逻辑完全的与界面隔绝开,让代码完全解耦。

一、Dagger2简介

1、首先看看什么是Dagger2:
Dagger是为Android和Java平台提供的在编译时进行依赖注入的框架。编译时:编辑时生成代码(rebulid),我们完成所需对象的注入。
2、为什么是使用Dagger2
Dagger2解决了基于反射带来的开发和性能上的问题。
3、Dagger2做什么工作
Dagger2主要用于做界面和业务之间的隔离。

二、Dagger2的使用

1、引入配置:
  • 添加Dagger2的依赖 compile ‘com.google.dagger:dagger:2.6’
  • 编译时生成代码的插件配置(android-apt)
//project的gradle中添加
    buildscript {
        dependencies {
                classpath           
.neenbedankt.gradle.plugins:android-apt:1.8'
        }
    }
//apt插件的使用
    modle的gradle中添加
        apply plugin: 'com.neenbedankt.android-apt'
//关联Dagger2
    dependencies {
        apt 'com.google.dagger:dagger-compiler:2.6'
    }
2、操作步骤
  • 第一步 在Activity中的配置 使用@Inject注解
    @Inject
    HomePresenter homePresenter;
  • 第二步 创建Module 分别使用@Module和@Provides注解
package ledon.com.retrofitdemo.dragger;

import dagger.Module;
import dagger.Provides;
import ledon.com.retrofitdemo.presenter.HomePresenter;
import ledon.com.retrofitdemo.presenter.impl.HomePresenterImpl;
import ledon.com.retrofitdemo.view.HomeActivity;
import ledon.com.retrofitdemo.view.HomeView;


//dagger2使用  第二步
@Module
public class HomeActivityModule {
    HomeActivity activity;

    public HomeActivityModule(HomeActivity activity) {
        this.activity = activity;
    }

    @Provides
    HomePresenter provideHomeActivityPresenter(){

        return new HomePresenterImpl(activity);
    }
}
  • 第三步 创建接口类使用@Component注解
package ledon.com.retrofitdemo.dragger;

import dagger.Component;
import ledon.com.retrofitdemo.view.HomeActivity;


//dagger2使用  第三步

@Component(modules = HomeActivityModule.class)
public interface HomeActivityComponet {
    void in(HomeActivity activity);
}
  • 第四步 在AS中rebulid一下,生成Dagger2依赖注入的代码
  • 第五步 在Activity中
   DaggerHomeActivityComponet componet = (DaggerHomeActivityComponet) DaggerHomeActivityComponet.builder()
                .homeActivityModule(new HomeActivityModule(this))
                .build();
        componet.in(this);
        homePresenter.getVideo();

到此集成Dagger2的所有步骤就已经完成了,在界面view视图里看不到业务逻辑的代码,解耦完全。

在操作中会使用到@Inject、@Module、@Provides、@Component注解,那么他们分别在完成什么工作?
HomeActivityPresenter presenter        =       new HomeActivityPresenterImpl(this);
@Inject                           @Component        @Module  @Provides
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值