首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Dagger2系列——实例解析

如果mvp不清楚的可以借鉴 mvp google 写法;RxJavaRetrofit后期我也会分享出来(知道的略过),欢迎关注!!! 先看下关于Dagger部分的包目录结构: ?...因为Dagger2需要这些标注通过apt插件自动生成代码。 AppComponent中提供的IRetrofitRequest单例对象如何在Application中使用呢?...getComponent() { return appComponent; } } 上面代码中的DaggerAppComponentDagger2帮我们自动生成的,只要编译一下就可以自动生成...AppComponent需要初始化依赖的两个Module(AppModuleRetrofitModule),这里生成的DaggerAppComponent是通过构建者模式进行初始化的。...@Inject MainActivityPresenter presenter; 注意1:但是整个MainActivity中却找不到初始化的过程,再看providers()方法中的代码,跟App中有区别的是

60131
您找到你想要的搜索结果了吗?
是的
没有找到

如何使用MVP+Dagger2+RxJava+Retrofit开发(1)

概述 2016年5,6月份开始知乎上看到开发方法,那时候记得是看mvc,mvp,mvvm这三种开发模式区别,后面进一步了解到googlegithub上开源了使用这3种模式进行Android开发的demo...Dagger2库 关键概念 Inject--你用它告诉Dagger这个或者字段需要依赖注入 Module-- Modules里面的方法专门提供依赖,所以我们定义一个,用@Module注解,这样Dagger...构造的实例的时候,就知道从哪里去找到需要的依赖 Provide--modules中,我们定义的方法是用这个注解,以此来告诉Dagger我们想要构造对象并提供这些依赖。...例如:Android中,我们会需要不同类型的context,所以我们就可以定义 qualifier注解“@ForApplication”“@ForActivity”,这样当注入一个context的时候...的成员变量(非私有)前面注释@Inject 开始注入调用注射器的Inject方法 详解Dagger2 Android官方MVP架构示例项目解析 dagger2 让你爱不释手

1.5K80

Android 之dragger使用

1、依赖的注入配置独立于组件之外,注入的对象一个独立、不耦合的地方初始化,这样改变注入对象时,我们只需要修改对象的实现方法,而不用大改代码库。...所以,如果你的项目使用MVP架构开发,强烈建议配合dagger2一起使用。...接下来,贴代码之前,我先说说明下我的MVP架构传统的MVP有些不同,传统MVP的M层处理业务逻辑,P层仅仅是VM的桥梁;而我的P层同时处理与model相关的业务逻辑,不处理View层次的逻辑,View...接下来,分解这张图: AppComponent: 生命周期跟Application一样的组件。可注入到自定义的Application中,@Singletion代表各个注入对象为单例。...public AppComponent getAppComponent(){ return DaggerAppComponent.builder() .appModule

890100

Dagger2-从入门到精通(下)

平时我们可能会对一个创建不同的构造方法以满足不同的需求,假设现在现在ApiSevice有2个构造方法,根据不同情况调用不同方法。....ApiService@4a7d54f8 可以看你到LoginComponentUserComponent都依赖UserMoudle,并且创建ApiService已经加了@Singleton注解但是...-->UserComponet : com.example.ggxiaozhi.dagger2.DaggerUserComponet@4a7d3c9c 可以看到,UserComponetLoginActivity...MyApplication实例化AppComponent: 单例的依托于他所在的Component中,所以需要在Application中进行实例化。...Dagger2也是我用MVP构建项目时候使用的,可能学习的不是很深入。不过相信把这两篇文章的代码敲一边。平常的使用一定没有问题的。最后希望大家一起加油!!!

2.1K21

Dagger2 使用总结(三)

Dagger2 使用总结(三) 之前两篇主要针对Dagger2的基础库进行了简单的总结,本篇会重点讲述Dagger2的Android支持库,它对Android组件进行了定制,使代码更加简洁。...DaggerApplication来源于支持库且有两个: dagger.android.DaggerApplication:支持普通组件,不支持扩展(v4,v7)组件dagger.android.supportDaggerApplication...这里写ActivityModule只为了逻辑清晰,也可以将其内部实现直接写到AppComponent中。...小结 可以这样理解,我们先用应用的AppApplicationAppComponent搭好一个依赖注入的框架,而需要注入对象的组件,通过声明继承绑定到框架中,即可注入对象。...相比于普通的Dagger2使用,我们省略了以下步骤: ? ? ? @Binds 类似于@Provides,使用接口声明时使用,区别是@Binds用于修饰抽象中的抽象方法的,看下实例吧。

74010

Android Hilt实战初体验: Dagger替换成Hilt

Hilt通过为项目中的每个 Android 提供容器并自动管理其生命周期,提供了一种应用中使用 DI(依赖项注入)的标准方法。...Hilt与Dagger的主要目标都是一致的: 简化 Android 应用的 Dagger 相关基础架构。 创建一组标准的组件作用域,以简化设置、提高可读性以及应用之间共享代码。...但是Android中会实例化许多组件,例如Activity,因此应用中使用Dagger需要开发者编写大量的样板代码。Hilt可以减少这些样板代码。...:hilt-android-compiler:2.28-alpha" } Application 使用Dagger时,需要一个AppComponent单例组件,项目中的其它SubComponent都将依赖于它...它将替代Dagger中的AppComponentAndroid 对于Android,使用Dagger时需要定义SubComponent并将它依赖到Application中。

1.6K20

看到如此多的MVP+Dagger2+Retrofit+Rxjava项目,轻松拿star,心动了吗?

RxlifecycleAndroid上使用rxjava都知道的一个坑,就是生命周期的解除订阅,这个框架通过绑定activityfragment的生命周期完美解决....5.0以下优势很大,5.0以上系统默认使用的内存管理Fresco类似. LeakCanarySquare出品的专门用来检测AndroidJava的内存泄漏,通过通知栏提示内存泄漏信息....android:value="ConfigModule"/> 2.2 AppComponent Application生命周期是App...需要的ModelView,都使用Dagger2注入,这样即解藕又方便测试,怎么注入?...接口(Contract中定义的接口)的实现,Model需要AppComponent中提供的RepositoryManager来实现网络请求和缓存,所以需要通过Component依赖AppComponent

2.8K30

快刀斩乱码—— Dagger2没有想象的那么难

关于Dagger2这种依赖注入框架的好处在这只简单的提一下 依赖的注入配置独立于组件之外 依赖对象是一个独立、不耦合的地方初始化。当初始化方式改变的时候修改的代码少。...@Inject:@Inject注解有两个作用,1是需要依赖的(下面这样的都会称为目标)中标记成员变量告诉Dagger这个类型的变量需要一个实例对象。...Dagger2中有一个默认的作用域注解@Singleton,通常在Android中用来标记在App整个生命周期内存活的实例。...例如,Android中,我们需要不同类型的Context,我们可以自定义标识符注解“@ForApplication”“@ForActivity”。...完成上面两步之后我们会不会有这样的思考:如果同时有@Module@Inject构造方法来提供同一型的实例,Dagger会调用哪个呢?这就牵涉到@Module@Inject的优先级问题了。

1K20

MVPArms MVP快速集成框架

MVPArms是一个集成了大量Android主流框架,并且全部使用Dagger2管理,以及提供API将所有库连接起来方便使用,还提供详细的Wiki文档....对于一个新的Android项目,特别是熟练使用Dagger2Rxjava的开发者,你们只需要将此项目Clone下来,Demo只实现了一个页面,将此页面删除掉,添加所需要的Retrofit API,你的框架就搭建好了...RxlifecycleAndroid上使用rxjava都知道的一个坑,就是生命周期的解除订阅,这个框架通过绑定activityfragment的生命周期完美解决....5.0以下优势很大,5.0以上系统默认使用的内存管理Fresco类似....LeakCanarySquare出品的专门用来检测AndroidJava的内存泄漏,通过通知栏提示内存泄漏信息. ---- Hello 我叫Jessyan,如果您喜欢我的文章,可以以下平台关注我?

3.3K1815

解决android viewmodel 数据刷新异常的问题

原因 千辛万苦找到了是因为项目中使用了 Dagger2 在给三个Fragment注入 Activity的 ViewModel 时,实际上是注入了三个 ViewModel 对象 导致每个Fragment...ViewModel 解决2(失败了) Activity 的 module 中 @Provide修饰的方法上再加上个 @Singleton 报错:AppComponent has a @Singleton...原因:@Singleton AppComponent 上声明了,@Singleton 并不是设计模式中的单例模式,而是 Dagger2 为了保证 module 提供的产品,一个 Scope (Component...如上,表示了三个 Module AppComponent 这个scope中是单例的 解决3 既然外层已经使用了 @Singleton ,那么我们可以自定义一个注解来表示一个 scope 创建注解:...@NewPesticideSingle (名字任意) 标注 Module 对应的 Component 中即可 以上这篇解决android viewmodel 数据刷新异常的问题就是小编分享给大家的全部内容了

1.3K21

笔记(二十二)——Dagger2使用

——个人平时笔记,看到的同学欢迎指正错误,文中多处摘录于各大博主与书籍精华 参考见:Android开发之Dagger2--Module&Component(三) 【个人理解:Module可提供返回多个实例来绑定到...@Provides:@Module 中使用,我们定义的方法用这个注解,用于告诉 Dagger 我们需要构造实例并提供实例返回。 3....@Component: 是@Inject注入@Module组件的桥梁,需要列出所有被@Module注解修饰的Module组件以组成一个完整的组件,Component是一个包装,用于从@Module...要注入一个,可以通过两种方法: 的构造方法上添加@Inject注解 @Module +@Providers注解注入工厂的方式 public class MainActivity extends AppCompatActivity...Dagger 2中,@Scope被用于标记自定义的scope注解,可以理解为生命周期。简单说它们可以类似单例地标记依赖。

62110

封装之路(四) BaseFragment BaseViewModel BaseModel

其中BaseApp进行了一些修改,主要是强制了需要AppComponent,不做太多兼容,只做纯粹的Dagger+MVVM的框架,除此之外的模式不做兼容了。...我们这节来看下BaseFragment,这个其实实现BaseActivity没啥区别。我们看下源码: 完成任务: 获取Baseapp的AppComponent,为依赖全局做注入准备。...对比上一版本,当前版本加入了ViewModel,因此BaseFragment BaseActivity的生命周期里面,加入了相应的调用。...完成任务: initDagger 初始化Dagger,非强制,原因是有时我们不需要注入,直接在的构造函数显式注入。...getModel 返回Model,初始化ViewModel对应的Model,作为数据获取。 后面setBusmModel.setBus 为了初始化Bus,后面注册反注册需要。

1.2K100

项目中怎么灵活使用Dagger?

使用Dagger的场景太少了,大部分只是使用Dagger注入MVP,并且有些Retrofit都是自己new,并没有使用Dagger管理,甚至有些使用一次接口就retrofit.create(ApiService.class...= {ActivityModule.class},dependencies = {AppComponent.class}) public interface ActivityComponent {...如果也要用到这个接口,就可以直接重用这个Model,MVP最大的好处之一就是可以重用MP层 有些没有Model层,直接给Presenter注入Retrofit Api(有些是注入一个管理,如果项目小接口少...项目中用到最多的就是向Presenter提供ViewModel的同时,向每一层提供所需要的单例,并且使用Dagger不断的重用PresenterModel,其实Dagger本来就抽象,说再多不如直接看代码是怎么实现的...,然后照着模版直接在自己项目中使用,本文的主题不就是项目中怎么灵活使用Dagger吗?

83320
领券