前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >封装之路(四) BaseFragment BaseViewModel BaseModel

封装之路(四) BaseFragment BaseViewModel BaseModel

作者头像
用户1263308
发布2018-02-01 18:56:12
1.2K0
发布2018-02-01 18:56:12
举报

框架实时变更,一直在调整,也是自己的实践过程,继续奋斗了。估计大家对实现没啥兴趣,这节结束,后面直接去github地址看更新了,就不再开贴说了。当这个框架完成时,会出一个使用手册出来。

前面写了BaseApp和BaseActivity,我们继续完善这个xmCore库。其中BaseApp进行了一些修改,主要是强制了需要AppComponent,不做太多兼容,只做纯粹的Dagger+MVVM的框架,除此之外的模式不做兼容了。

我们这节来看下BaseFragment,这个其实实现和BaseActivity没啥区别。我们看下源码:

完成任务:

  • 获取Baseapp的AppComponent,为依赖全局做注入准备。
  • initDagger ,自己去写注入,BaseFragment提供一个获取AppComponent的方法
  • getDataBinding 绑定数据
  • getViewModel 获取ViewModel 紧跟着mViewModel.init();去完成ViewModel的注入,初始化动作。
  • initData 初始化Fragment 数据。

经过如此初始化下来,Fragment的创建则完成了。对比上一版本,当前版本加入了ViewModel,因此在BaseFragment 和BaseActivity的生命周期里面,加入了相应的调用。

我们继续来看下BaseViewModel,主要完成Bus的初始化和反注册过程。

完成任务:

  • initDagger 初始化Dagger,非强制,原因是有时我们不需要注入,直接在类的构造函数显式注入。
  • getModel 返回Model,初始化ViewModel对应的Model,作为数据获取类。

后面setBus和mModel.setBus 为了初始化Bus,后面注册和反注册需要。

  • initData 初始化数据

如上,BaseViewModel则完成了初步代码。

下来我们继续来看BaseModel,这个相对更简单些,后续进一步修改。

  • 主要做了Bus的post封装,和当请求网络数据时候,将Subscription存下来,当view关闭的时候,进行释放。 接口是在慢慢处理,优化,因此这只是当前的状态,后续在完成基础框架的时候,会进行实战验证,进行修正,当然您有好的建议,欢迎交流。

代码地址:

https://github.com/luxiaoming/xmCore

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

本文分享自 代码GG之家 微信公众号,前往查看

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

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

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