前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Dagger2 使用总结(三)

Dagger2 使用总结(三)

作者头像
Seven Du
发布2020-12-21 16:19:32
7680
发布2020-12-21 16:19:32
举报
文章被收录于专栏:FreeSWITCH中文社区

Dagger2 使用总结(三)

之前两篇主要针对Dagger2的基础库进行了简单的总结,本篇会重点讲述Dagger2的Android支持库,它对Android组件进行了定制,使代码更加简洁。

简单用例

场景:向MainActivity中注入MainPresenter对象

导入相关库

MainPresenter类

核心代码

DaggerApplication来源于支持库且有两个: dagger.android.DaggerApplication:支持普通组件,不支持扩展(v4,v7)组件dagger.android.supportDaggerApplication:支持扩展组件,不支持普通组件

如果项目中需要支持两种类型的组件,可以采用上述代码中的形式,即: 继承dagger.android.DaggerApplication并实现HasSupportFragmentInjector接口。

这里写ActivityModule类只为了逻辑清晰,也可以将其内部实现直接写到AppComponent中。

以上代码是该例实现的重点,先不急去理解,因为其更像是模板化的代码,先知其然,再慢慢知其所以然。

现在我们已经实现了将MainActivity绑定到框架中,下面看一下怎么注入对象。

在MainActivity中注入MainPresenter

小结

可以这样理解,我们先用应用的AppApplication和AppComponent类搭好一个依赖注入的框架,而需要注入对象的组件,通过声明和继承绑定到框架中,即可注入对象。相比于普通的Dagger2使用,我们省略了以下步骤:

@Binds

类似于@Provides,在使用接口声明时使用,区别是@Binds用于修饰抽象类中的抽象方法的,看下实例吧。 场景:将MainPresenter注入到MainActivity中

Presenter接口和MainPresenter

添加一个MainModule类来统一管理

在MainActivity中自动注入对象

小结

将上述的

@Bindsabstract Presenter mainPresenter(MainPresenter mainPresenter);

换成

@Providesstatic Presenter mainPresenter(MainPresenter mainPresenter) { return new mainPresenter(); }

也是可以的,使用@Binds相比@Provides的好处是,更有效率。

扩展

要给MainPresenter加两个int参数id,type:

以上就是我们这三篇文章的全部内容了,感谢大家的支持

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-11-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeSWITCH中文社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档