实战经验
架构模式实战经验
前言
背景
脚手架项目的由来
架构图总览
福利 1:DataBinding 严格模式
福利 2:UnPeek-LiveData 发送一次性事件
福利 3:Smooth-Navigation 使转场顺滑
Note 2020.10.28 加餐
透过 State-ViewModel 托管和恢复状态
透过 Event-ViewModel 跨页面通信和 “消息鉴权”
通过 Request 来复用转发逻辑
Note 2020.11.03 加餐
正确区分 “可变状态” 和 “只读数据” 的本质及作用
而这也就顺带解析了 为什么有了 ViewModel 还要有 Request
通过 UseCase 管理可叫停的业务
通过 DataResult 回调数据层结果
Note 2020.12.01 加餐
对 DataResult v1.1 新设计的补充说明
综上
前言
姗姗来迟的笼统描述
“数据倒灌” 的由来
为什么会有数据倒灌
Note 2020.07.17 加餐:
图文解析数据倒灌发生的场景
为何非要通过 ViewModel + LiveData 来处理页面通信?
为什么通过全局 ViewModel 而不是 静态单例?
为什么不用 LiveDataBus?
最新的 Result API 如何?
Event 事件包装器、反射方式、SingleLiveEvent 分别存在什么问题?
UnPeekLiveData 是如何解决这些问题的?
GitHub & Maven 依赖
综上
Note 2020.07.21 加餐:
UnPeekLiveData 增加一层 ProtectedUnPeekLiveData 的设计缘由解析
Note 2020.10.15 加餐:
升级到 UnPeekLiveData v4.0 享用 “更快更稳” 的防倒灌机制
Note 2021.04.22 加餐:
升级到 UnPeekLiveData v5.0 获得更好的内存性能和更友好的 API 访问
Note 2021.06.18 加餐:
是代码复杂度更小的 UnPeekLiveData v6.0 设计
Note 2021.07.19 加餐:
是代码复杂度进一步减小的 UnPeekLiveData v6.1
Note 2021.08.10 加餐:
分享一份 v6.1 源码简化版,方便对核心 “防倒灌” 机制的理解
Note 2021.08.12 加餐:
是内存管理效率进一步优化的 UnPeekLiveData v7.0
Note 2021.08.21 加餐:
分享一份 v7.2 源码完整版,是简练完整的防倒灌设计
前言
为什么要提及 “一致性问题”
架构组件和 “一致性问题” 的密切关系
到底什么是一致性、什么是一致性问题
关于 “解决一致性问题” 的举一反三
Lifecycle 是通过 ____ 来实现 生命周期管理的一致性
LiveData 是通过 ____ 来实现 消息同步的一致性
DataBinding 是通过 ____ 来实现 视图调用的 null 安全一致性
综上
前言
并不是每一个提问都值得被回答
本质和区别,我只说一遍
先说结论
所以二者的区别是什么?
Jetpack MVVM 和 MVVM 模式的关系
我为什么能瞬间感知沟通质量的 “好” 与 “坏” ?
综上
Note 2020.09.10 加餐:
Jetpack MVVM 或借鉴了 MVI 开发模式
Note 2020.12.31 加餐:
“依赖倒置” 的适用场景 及 源码设计分享
前言
绝对自由和自由的代价
边界意识和监管下的真自由
LiveData 的本质和精髓
所以 LiveDataBus 的问题在于
用工程化的语言再捋一捋
关于 “唯一可信源” 的定义
综上
前言
第一层:LiveData 是与 UI 打交道的 “最后一环”
第二层:LiveData 可以推状态,也可以推事件
广播:封闭式 的 发布订阅模式
第三层:LiveData 支持 “唯一可信源” 的鉴权设计
状态是私域的,事件是公域的
公证处:开放式 的 发布订阅模式
第四层:LiveData 存在 “数据倒灌” 的问题
使用 UnPeek-LiveData 解决 “数据倒灌” 问题
综上
最后更新于
这有帮助吗?