文档章节

Android 依赖注入

zmhot88
 zmhot88
发布于 2015/08/25 21:43
字数 298
阅读 3053
收藏 5

Android 依赖注入


Dagger2 ![https://github.com/google/dagger](github托管地址)


1. 安装依赖:

```

    compile 'com.google.dagger:dagger:2.0.1'

    compile 'com.google.dagger:dagger-compiler:2.0.1'

```


2. 新建一个Component,这是一个接口:

```

@Component(modules = ApplicationModule.class)

public interface ApplicationComponent {


}

```


3. 新建一个Module

```

@Module

public class ApplicationModule {

}

```


ok, 这里出错了,Error:(4, 24) 错误: 程序包javax.annotation不存在。

需要添加新的依赖,直接上最新的:

```

    compile 'org.glassfish:javax.annotation:10.0-b28'

```


可以查询一下![jcenter](https://bintray.com/bintray/jcenter/)


又不行了,DaggerApplicationComponent这个自动生成的类,怎么也导入不了。


解决方法:

在Project的build.gradle中加上:

```

buildscript {

    repositories {

        jcenter()

    }

    dependencies {

        classpath 'com.android.tools.build:gradle:1.2.3'

        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.7' //新增

    }

}

```


在app的build.gradle中添加:

```

apply plugin: 'com.android.application'

apply plugin: 'com.neenbedankt.android-apt'

```

修改dagger-compile的导入方式:

```

    apt 'com.google.dagger:dagger-compiler:2.0.1'

```


Sync.这样就可以找到那个自动生成的DaggerApplicationComponent,在Application的onCreate中生成Component:

```

component = DaggerApplicationComponent.builder()

                .applicationModule(new ApplicationModule())

                .build();

```


4. 添加注入

```

@Component(modules = ApplicationModule.class)

public interface ApplicationComponent {


    void inject(MercenaryApplication androidApplication);

    void inject(BaseActivity activity);

    void inject(BaseFragment fragment);


}

```


这几个都得在Application中提供注入。对应的Activity中也要注入。


5,ApplicationModule中提供Provider

```

    @Provides

    MercenaryApplication provideApplication() {

        return mApplication;

    }


    @Provides

    LayoutInflater provideLayoutInflater(){

        return LayoutInflater.from(mApplication);

    }

 ```


 这个基本结构已经出来了。


 代码上传到 ![MercenaryDemoAndroid](https://git.oschina.net/brightmoon/MercenaryDemoAndroid),可以查看 tag step-1.




© 著作权归作者所有

zmhot88
粉丝 0
博文 8
码字总数 5519
作品 0
南京
程序员
私信 提问
使用 Kotlin 构建 MVVM 应用程序—提高篇:Dagger-Android

写在前面 本篇是对于使用Kotlin构建MVVM应用程序—第四部分:依赖注入 Dagger2 的补充。 在依赖注入 Dagger2 这篇文章中,我们了解了 Dagger2 是如何进行依赖注入的。 可以简单的将Dagger2理...

ditclear
2018/08/19
0
0
当Dagger2撞上ViewModel,一种更简单的注入方式

简书地址:www.jianshu.com/p/d3c43b9dd… 写在前面 过去一年多的时间里,我一直在致力于打造一个最简单,并能让普通Android开发者都能快速上手的框架,并陆续发表了多篇开发心得,最终汇总为...

ditclear
2018/12/03
0
0
当Dagger2撞上ViewModel

本文已授权 微信公众号 玉刚说 (@任玉刚)独家发布。 写在前面 过去一年多的时间里,我一直在致力于打造一个最简单,并能让普通Android开发者都能快速上手的框架,并陆续发表了多篇开发心得...

ditclear
2018/12/18
0
0
当Dagger2遇上ViewModel

写在前面 过去一年多的时间里,我一直在致力于打造一个最简单,并能让普通Android开发者都能快速上手的框架,并陆续发表了多篇开发心得,最终汇总为了《使用Kotlin构建MVVM应用程序》系列文章...

ditclear
2018/12/01
0
0
Spring for Android 将 Spring 引到 Android 上

近日,SpringSource发布了Spring for Android 1.0。Spring for Android是Spring Framework的扩展,有助于简化原生Android应用的开发。此次发布最为引入关注之处是提供了一个REST客户端(Res...

墙头草
2012/07/09
4.6K
4

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
12
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
12
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
昨天
11
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部