实战经验

架构模式实战经验

  • 前言

  • 背景

  • 脚手架项目的由来

  • 架构图总览

  • 福利 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 解决 “数据倒灌” 问题

  • 综上

最后更新于