找回密码
 立即注册
  • QQ空间
  • 回复
  • 收藏

Android MVI框架之——mavericks

Android MVI框架之——mavericks
回复

使用道具 举报

大神点评(1)

x72074904 2024-12-5 14:43:19 显示全部楼层
前言

Android架构在不断演变,从MVC、MVP、MVVM到MVI。对于懒惰且自律性不强的开发者来说,能学习最新的技术就是一件了不起的事。因此,开发者通常会在GitHub上浏览各种开源框架,默默地收藏,以备不时之需。这就是我与mavericks的缘分。

文章提纲

mavericks是什么?


mavericks是由Airbnb技术团队开源的符合MVI架构的技术方案。Airbnb是一家技术实力很强的公司,其开源项目通常值得信赖。mavericks官方文档提到,公司内部多款产品都在使用这套方案,因此,它不是一个为了KPI而临时搭建的项目,可靠性有保障。

mavericks怎么用?


我们将探讨如何将MVI架构在项目中落地。MVI架构的目标是追求易用性和易维护性,包括分层清晰、减少模板代码、迭代影响最小、多人协同不易出错、扩展性强等。

配置


学习mavericks的步骤包括初始化Application模块,引入依赖,以及在Fragment或Activity中初始化。

简单的计数器


学习一个新框架通常从输出“Hello World”开始,对于mavericks,我们则从实现一个计数器功能开始。这个功能涉及MavericksState、MavericksViewModel和MavericksView三个关键词。MavericksState遵循特定规则,MavericksViewModel和官方ViewModel功能相似,只需额外传入初始化的state。MavericksView用于标记UI层,目前支持标记Fragment,不支持Activity,官方推荐使用Fragment作为UI层。

真正使用


在学习新框架时,我们不仅要关注简单的功能实现,还要深入了解其如何处理异步数据、异常处理等复杂场景。接下来,我们将探讨如何在项目中真正使用mavericks。

初始化ViewModel


虽然MavericksViewModel与官方ViewModel功能相似,但它们之间没有直接关系。因此,在初始化ViewModel时,不能使用官方方法,而是通过特定方法(如activityViewModel()、fragmentViewModel()等)获取MavericksViewModel实例。

setState()与withState()


setState()用于更新状态,并触发UI更新;withState()用于获取当前状态,以便在UI层操作。在使用MavericksView层时,框架会自动处理主线程问题。

onEach()和onAsync()


onEach()和onAsync()用于监听特定状态变化,处理异步逻辑。通过这些方法,开发者可以更灵活地管理UI状态和异步数据。

高能技能点


文章中详细介绍了mavericks中的高级特性,包括处理复杂业务场景、状态管理优化以及与外部库的集成。例如,状态派生字段、参数传递、状态持久化、与Jetpack Navigation和Hilt、Koin等库的集成。

后话


尽管我使用mavericks完成了一个小型商业项目,但对更复杂的业务场景尚未涉及。如果你对Android架构有深入理解,欢迎分享更多知识,我已整理成学习手册,以供学习参考。如有需要,请点击链接或私信获取学习资料。
回复 支持 反对

使用道具 举报

说点什么

您需要登录后才可以回帖 登录 | 立即注册
HOT • 推荐