MVI 笔记
Android MVI 架构的层次结构如下所示
这个结构层次的一个基本规则是,外层依赖内层,而内层应该是独立于外层的,不能以来外层。比如说Use Case应该是依赖于Repo的,而不能依赖于ViewModel。整体数据的流向如下所示
-
Model:根据业务需求设计出的data class,不依赖于任何其他模块并且不包含任何业务逻辑
-
Adapter: 转换网络接口返回或者数据库的实体数据,只是执行简单的数据转换职能。
-
Repo:封装从网络接口或者数据库读数据和写数据的操作。同时Repo层方法的输入输出应该只包含Model或者基础类型(其实有时候我的数据库实体类也是Model哈哈哈),例如
1
2
3
4
5
6
7
8
9@Singleton
class AIExpandTaskRepo(
private val aiExpandTaskDao
){
fun getTask(id: Int): AIExpandTask{
aiExpandTaskDao.getTask(id)
}
} -
UseCase:负责具体应用场景下的业务逻辑
-
UiState: 描述UI状态的数据类,应该尽可能地方便UI层进行显示。由ViewModel进行管理和调整并通过flow被UI层订阅
-
ViewModel:管理UI状态并执行相应的业务逻辑如状态转换和用户操作响应(handle UserIntent)
-
UI Layer:应该是完全由UIiState驱动来显示UI的。
MVI 笔记
http://yolo-jbc.github.io/2024/02/16/Android/note/mvi_note/