浅谈Android开发中的MVVM模式 您所在的位置:网站首页 mvvm网络在哪一层 浅谈Android开发中的MVVM模式

浅谈Android开发中的MVVM模式

2023-10-23 19:05| 来源: 网络整理| 查看: 265

前言

看到有人说 MVVM 核心是 双向绑定,没有使用 Databinding 的项目都是假 MVVM 。 即:MVVM == 双向绑定,双向绑定 == Databinding,MVVM == Databinding。

今天我们便来聊一聊 Android 中的 MVVM。

MVVM

MVVM(Model-View-ViewModel)最早由微软提出。ViewModel指 "Model of View"——视图的模型。

图片来源网上.png

Model:它仅仅关注数据本身,不关心任何行为。 View:负责接收用户输入、发起数据请求及展示结果页面。 ViewModel:负责业务逻辑,实现 View 与 Model 的双向绑定。 双向绑定

简而言之,视图随数据改变,数据随视图改变。

图片来源网上.png

Android 中的 MVVM

在 Android 中我们通过 Jetpack 提供的多个组件来实现 MVVM 。

图片来源网上.png

Model:对应图中的 Repository(网络请求数据、本地数据库数据等)。 View:对应图中的 Activity/Fragment 。 ViewModel:对应图中的 ViewModel 和 LiveData。 ViewModel + LiveData 实现双向绑定

Activity/Fragment 通过观察 ViewModel 中的 LiveData 来更新界面。 Repository 通过更新 ViewModel 中的 LiveData 来更新界面。

单纯的文字可能比较晦涩难懂,我们结合代码来看会更加清晰。

TestActivity import android.os.Bundle import android.view.LayoutInflater import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity import com.example.fragment.project.databinding.ActivityTestBinding import com.example.fragment.project.model.TestViewModel class TestActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val bind = ActivityTestBinding.inflate(LayoutInflater.from(this)) setContentView(bind.root) // 使用“by viewModels()”Kotlin属性委托获取ViewModel val viewModel: TestViewModel by viewModels() bind.btn.setOnClickListener { //通过LiveData更新天气信息 viewModel.updateWeather("阴天") } //通过观察LiveData来更新界面 viewModel.weatherResult.observe(this) { bind.weather.text = it } //通过ViewModel获取天气信息 viewModel.getWeather() } } activity_test.xml TestViewModel import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel class TestViewModel : ViewModel() { // 这边就不写Model直接更新数据 val weatherResult = MutableLiveData() fun getWeather() { // 获取网络数据或本地数据库数据等 weatherResult.postValue("晴天") } fun updateWeather(str: String) { // 更新网络数据或本地数据库数据等 weatherResult.postValue(str) } }

至此 Android 开发中的 MVVM 算是全部讲完。

MVVM 与 DataBinding 的关系

原本计最后详细讲下 Databinding | 数据绑定库 ,写到这里又觉得没必要。 怎么说呢,MVVM 是一种架构模式,而 DataBinding 是谷歌推出的方便实现 MVVM 的工具。 对此感兴趣的童鞋可以自行去官网查看。

Thanks

以上就是本篇文章的全部内容,如有问题欢迎指出,我们一起进步。 如果喜欢的话希望点个赞吧,您的鼓励是我前进的动力。 谢谢~~

最后推荐一个入门级的项目 fragmject ,通过对Kotlin和Jetpack全家桶的系统运用,实现的一个功能完备符合主流市场标准App。 代码简单,内容全面,知识详细,快速上手,对理解其他项目设计思想和封装技巧也很有帮助。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有