麦克雷 Mavom.cn
标题:
Android MVI框架之——mavericks
[打印本页]
作者:
Meerlinel
时间:
2024-12-5 14:42
标题:
Android MVI框架之——mavericks
Android MVI框架之——mavericks
作者:
x72074904
时间:
2024-12-5 14:43
前言
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架构有深入理解,欢迎分享更多知识,我已整理成学习手册,以供学习参考。如有需要,请点击链接或私信获取学习资料。
欢迎光临 麦克雷 Mavom.cn (https://mavom.cn/)
Powered by Discuz! X3.5