封装之路(四) BaseFragment BaseViewModel BaseModel
来源:互联网 发布:js后退页面同时刷新 编辑:程序博客网 时间:2024/05/01 10:50
框架实时变更,一直在调整,也是自己的实践过程,继续奋斗了。估计大家对实现没啥兴趣,这节结束,后面直接去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
- 封装之路(四) BaseFragment BaseViewModel BaseModel
- iOS 封装BaseModel
- mvc 封装 5 BaseModel
- Android探索之旅(第二十八篇)BaseActivity,BaseFragment封装必要点
- 对BaseFragment的封装
- BaseFragment基类封装
- BaseActivity和BaseFragment封装
- ios baseModel的封装方法
- BaseModel
- BaseModel
- BaseModel
- baseModel
- BaseModel
- BaseModel
- BaseActivity与BaseFragment的封装
- 4、Basefragment的封装使用
- BaseActivity与BaseFragment的封装
- BaseActivity和BaseFragment 的封装
- Adaboost - 新的角度理解权值更新策略
- Map的插入操作和按照value排序
- centos6.5 部署Python3.5.2版本 配置ipython环境
- Angular实现一个简单的多选复选框的弹出框指令
- fatal: unable to access 'https://android.googlesource.com/platform/frameworks/volley/': Received HTT
- 封装之路(四) BaseFragment BaseViewModel BaseModel
- java写一个Swing小程序:《我的时钟》
- 二维数组 /java初学
- SVN命令使用详解
- ubuntu中修改主机名方法
- HDU 2001(Java)
- java程序员—工作中开发经验总结
- CSS三大特性之层叠性
- 半年总结