@
neverfelly 感谢你的关注 😂
目前在 Jetpack 状态管理框架的支持下,单 Activity 背景下的 多 fragment 通信实际上是很方便的,通过 ViewModel 就能办到。
反倒是多 Activity 之间的通信不太方便,因为它是面向跨进程组件通信而设计的,一开始就没打算考虑组件间的实时通信(例如 在二级页面点击播放,一级页面因为生命周期的缘故得不到 唯一可信源推送的状态分发)
而且 ViewModel 和 LiveData 是在 “架构设计面向标准化、规范化” 的背景下被设计出来的。简言之,只要用 ViewModel 和 LiveData,就算是新手,也能不自觉地实现 单向依赖 和 从唯一可信源取材并完成状态的分发,如此就能规避一系列不可预期的错误。😉
VIABUS 更像是阉割版的 ViewModel + LiveData,说实话现如今我已不赞成在公司之外的项目中使用 VIABUS 了。
VIABUS 的价值在于,倡导一种完全遵循设计模式 6 大原则的开发理念,即 “职责分离”,他们之间通过约定的接口,从而实现并行开发。
但它和 MVP 有着共同的一个缺点 —— 缺乏了对状态管理的支持。使得当视图控制器重建时,无法从独立于视图控制器的单例中恢复最后一次的数据,而需要重新请求。(我司的项目是固定手机竖屏、平板横屏,所以一直以来无需考虑状态重建的问题)。
所以,过一段时间考虑在 GitHub 开源一份 基于 jetapck 的状态管理框架 最佳实践,并在 VIABUS 的主页引导访客到该项目。😉