RxArchitecture
android-architecture-components 模式为MVVM.主要用到了
google在2017年出了一个新的框架- V - LifecycleActivity,LifecycleFragment为View层,所有的view操作都在这边处理,数据方面只负责接收
- VM - ViewModel用于控制数据逻辑层代码,所有的数据代码都在这里处理
- M - 俗称的Model层
- repository - 数据仓库,一般来说是用于定义service的,主要是当数据源需要在SQLite和Http切换的时候用到,如果没有这种业务可以不需要这一层
- Data Binding - 用于实现双向绑定
- LiveData 一个具有生命周期的数据管理器,当V和VM绑定后,在VM的LiveData会跟随的V的生命周期消失
我的取舍
- Data Binding - 我第一个就舍弃掉了,原因是我觉得它侵入了我的xml文件,维护代码会很麻烦
- LiveData - 刚刚开始我觉得这个东西应该很棒,毕竟跟随着生命周期嘛.然后我写着写着就觉得不对劲了.首先,LiveData的observe方法会调用多次给了我不可控的感觉.其次,LiveData作为一个数据管理器,数据操作太难受了,用着很别扭.然后我就弃用LiveData,投入了RxJava的怀抱了.哇~贼舒服...
于是乎我自己参照官方的Demo,自己写了一个demo,demo的功能参考的是GeekNews这个开源项目,下面简单介绍下我的demo
- base 封装了LifecycleActivity,LifecycleFragment,主要是实现了LifecycleOwner接口
- di dogger2的一些处理,封装了Activity,fragment,ViewModel,Http相关.
- repository 数据提供工厂
- ui 项目的V层和VM层全部在这个里面
- viewmodel 提供统一的VM生成器,用于dogger2生成VM
- 本项目采用了单AC+多FG模式,数据操作用的是RxJava2
Thanks
感谢项目中用到的开源项目的作者,本项目中有些功能受你们项目灵感的启发,有些功能也用到你们的代码完成。
对此如果有什么意见请与我联系!再次感谢!
TODO
- toolbar代码的编写
- 图片瀑布流滑动造成混乱
- 去除dogger2 (待定)
- repository的完善,增加SQLite本地缓存
- 更多的功能