Jetpack Compose尝鲜(1)-MVI架构

本文介绍了博主在学习Jetpack Compose时遇到的状态管理问题,从而引出MVI架构。详细解释了MVI架构的含义,包括Model、View和Intent,并阐述了如何简单实现这一架构,特别强调了单向数据流和界面调用的方法。
摘要由CSDN通过智能技术生成

一、引子

博主在学习Jetpack Compose时,由于引入的各种渲染状态十分混乱,导致了代码十分混乱,而且状态管理也耗费精力,所以一直在寻找是否有一种可以解决这个问题的架构。在偶然的一次资料查询中,MVI架构走入了我的视线,本文就如何简单实现这个架构做个演示。

二、MVI的含义

2.1 M(model)

MVI架构中,model与其他架构的定义有所不同它主要承接的是需要渲染的UIState和各种数据流(Data Flow)。UIState包括各种UI Layer所需要渲染的数据,可以实时的变化。

2.2 V(view)

MVI架构中,view与其他架构的定义大致相同,不过在MVIView需要订阅UIState,其根据UIState刷新UI

2.3 I(intent)

MVI架构中,intent是新提出的概念,中文翻译为意图,如果不太好理解可以简单的理解为用户对界面的交互操作或者用户想要程序实现的功能。

MVI

三、MVI的简单实现

目前MVI架构的实现存在则几种方法,其中有使用Channel实现的,但博主在学习时并没有掌握,但在观看资料与教程视频中学习到了一种简单的实现。

3.1 UIState

无需页面加载状态:

data class ExampleState(
    val exampleState1: String,
    val exampleState2: String,
    val exampleState3: String
)

需要页面加载状态:

sealed class ExampleState {
   
	// 正在加载
    data object Loading : ExampleState()

	// 加载成功
    data class Success(
        val exampleState1: String, val exampleState2: String, val exampleState3: String
    ) : ExampleState()
    
	// 加载失败
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值