门户网站建设自查报告注册公司网上核名流程
2026/2/20 9:16:04 网站建设 项目流程
门户网站建设自查报告,注册公司网上核名流程,邮箱域名,ppt模板免费下载完整版免费简约Android MVVM 模式详情解析一、为什么需要 MVVM#xff1f;在早期 Android 开发中#xff0c;常见架构是#xff1a;Activity / Fragment 上帝类UI 控制 业务逻辑 网络请求 数据处理 全部混在一起典型问题#xff1a;❌ Activity 过于臃肿#xff08;上千行#xff0…Android MVVM 模式详情解析一、为什么需要 MVVM在早期 Android 开发中常见架构是Activity / Fragment 上帝类UI 控制 业务逻辑 网络请求 数据处理 全部混在一起典型问题❌ Activity 过于臃肿上千行❌ 逻辑与 UI 强耦合难以测试❌ 页面复用性差❌ 维护成本极高MVVMModel–View–ViewModel的核心目标分离 UI 与业务逻辑让界面只负责展示逻辑由 ViewModel 处理二、MVVM 架构概览1️⃣ 架构组成ViewActivity / Fragment ↓ 观察 ViewModel ↓ 调用 ModelRepository / DataSource层级职责View负责 UI 展示、事件分发ViewModel负责业务逻辑、状态管理Model数据来源网络 / 数据库 / 本地三、各层职责详解1️⃣ ViewActivity / Fragment只做三件事初始化 UI监听 ViewModel 数据变化把用户操作交给 ViewModel❌ View不应该做的事情网络请求数据解析业务判断示例class UserActivity : AppCompatActivity() { private val viewModel: UserViewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_user) viewModel.userLiveData.observe(this) { // 只负责刷新 UI textView.text it.name } button.setOnClickListener { viewModel.loadUser() } } }2️⃣ ViewModel核心ViewModel 是 MVVM 的灵魂职责处理业务逻辑保存 UI 状态提供可观察数据LiveData / StateFlow特点不持有 View 的引用生命周期比 Activity 长配置变更不销毁可单元测试示例class UserViewModel( private val repository: UserRepository ) : ViewModel() { private val _userLiveData MutableLiveDataUser() val userLiveData: LiveDataUser _userLiveData fun loadUser() { viewModelScope.launch { val user repository.getUser() _userLiveData.value user } } }3️⃣ Model数据层通常由Repository 模式组成Repository ├── RemoteDataSource网络 └── LocalDataSource数据库 / 缓存Repository 的职责屏蔽数据来源统一数据入口控制缓存策略示例class UserRepository( private val api: UserApi ) { suspend fun getUser(): User { return api.getUser() } }四、MVVM 中的数据驱动思想1️⃣ 核心理念UI 数据的映射结果不再主动“刷新 UI”而是数据变 → UI 自动更新Android 常用方案技术场景LiveData传统 AndroidStateFlowKotlin 协程DataBindingXML 直接绑定2️⃣ LiveData vs StateFlow对比项LiveDataStateFlow生命周期感知是否需 repeatOnLifecycleKotlin 友好一般非常好冷/热流热热推荐程度⭐⭐⭐⭐⭐⭐⭐五、MVVM Jetpack 推荐组合官方推荐MVVM ViewModel LiveData / StateFlow Room Retrofit Hilt示意图UI → ViewModel → Repository → DataSource ↑ StateFlow六、常见错误 反模式❌ 1. ViewModel 持有 Context / Viewclass BadViewModel(val context: Context) // ❌✅ 正确方式把资源、Toast、跳转交给 View或使用 Event 通知❌ 2. ViewModel 过度膨胀把所有逻辑都塞进 ViewModel✅ 建议复杂逻辑下沉到 UseCase / Domain 层ViewModel 只做“协调者”❌ 3. LiveData 用来做一次性事件例如 Toast / 跳转LiveDataBoolean // ❌ 会重复触发✅ 正确方式SingleLiveEventChannel / SharedFlow七、进阶MVVM Clean ArchitectureView ↓ ViewModel ↓ UseCase ↓ Repository ↓ DataSource优势更易测试复杂业务可控大型项目首选八、MVVM 的优缺点总结✅ 优点清晰分层UI 与逻辑解耦易测试生命周期安全❌ 缺点初学成本高小项目略显“重”设计不当仍会臃肿九、什么时候该用 MVVM项目规模是否推荐Demo / 小工具❌中型 App✅大型 / 长期维护项目⭐⭐⭐⭐十、一句话总结MVVM 的本质是用数据驱动 UI用 ViewModel 隔离复杂性

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询