软件风向标,重度软件行业发展门户!

文章更新 | 热门文章
您的位置: 首页  →  攻略 → 《mvandroidapk攻略 mvandroidapk无冬镇后山怎么过

mvandroidapk攻略 mvandroidapk无冬镇后山怎么过

2023-06-01 17:04:28      小编:      我要评论

前言

最近听到很多人在谈论Android开发中的MVVM模式,相信大家都对MVVM模型也有自己的看法,所以今天我们就深入了解一下

MVVM是Model-View-ViewModel缩写基本上是以MVC为根据的改进版本,MVVM本质上就是把它放在哪里View抽象处理状态和行为

MVVM框架是根据MVP模式与WPF一种由应用模式演变而来的新型框架,现在不仅有了原来的框架MVP同时框架WPF为了应对未来越来越复杂的项目需求,结合了新的特点,它是最重要和最关键的一点 就是能实现双向数据绑定

为何要做 MVVM ?

我们将MVVM分为三部分:

● M(Model,模型层 )

● V(View,视图层)

● VM(ViewModel,V与M连接的桥梁也可视为控制器)

优势

● 低耦合:View可以独立于Model同样的变化和修改ViewModel可以被多个View并且可以做到View和Model变化不相互影响

● 可重用性:可以把一些视图的逻辑放在ViewModel,让多个View复用

● 独立开发:开发人员可以专注于业务逻辑和数据的开发

● 可测性:清晰View分层使绩效层业务逻辑的测试更容易、更简单

难点

● 数据绑定 Bug 很难调试,你看到界面异常,可能是你 View 的代码有 Bug,也可能是 Model 的代码有问题,数据绑定一个位置的 Bug 被快速传递到其他位置,定位原有问题的地方就不那么容易了。

● 在大模块中,model它也会很大。虽然使用方便,但很容易保证数据的一致性。当时,长期持有和不释放内存会导致更多的内存

● 数据双向绑定不利于代码重用,客户开发最常用的重用是View,但是数据双向绑定技术让你在一起View都绑定了一个model,不同模块的model都不一样,不能简单的重用。View了

双向绑定

我们通常使用它ViewModel LiveData 双向绑定功能

首先,我们通过 Activity/Fragment 进行观察 ViewModel 中的 LiveData 更新界面

Repository 通过更新 ViewModel 中的 LiveData 来更新界面

接下来,我们将实现代码实现

TestActivity

import android.os.Bundleimport android.view.LayoutInflaterimport androidx.activity.viewModelsimport androidx.appcompat.app.AppCompatActivityimport com.example.fragment.project.databinding.ActivityTestBindingimport com.example.fragment.project.model.TestViewModelclass 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

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white"> <TextView android:id="@ id/weather" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="雨天" /> <Button android:id="@ id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/weather" android:layout_centerHorizontal="true" android:layout_marginTop="20dp" android:text=";纠正天气:阴天" /></RelativeLayout>TestViewModel

import androidx.lifecycle.MutableLiveDataimport androidx.lifecycle.ViewModelclass TestViewModel : ViewModel() { // 这边就不写Model直接更新数据 val weatherResult = MutableLiveData<String>() fun getWeather() { // 等等 weatherResult.postValue("晴天") } fun updateWeather(str: String) { // 更新网络数据或本地数据库数据等 weatherResult.postValue(str) }}

通过这些代码可以看到MVVM模式的功能

结语

以上是本文的全部内容

如果你喜欢文章中的内容,欢迎你表扬和评论。你的鼓励将是我前进的动力

需要文章中的源代码,或者想了解更多Android开发相关高级数据

欢迎在评论区留言或私信

后山[共44款]

攻略[共138385款]

mvandroidapk[共3款]

无冬镇[共13款]

  • 发表评论
资讯排行 资讯中心 热门专区 软件评测
软件排行榜 软件攻略 软件下载 软件开测表
软件排行榜 软件礼包 软件下载 新软件测表
安卓排行榜 软件视频 软件下载
苹果排行榜