当前位置: 首页 > news >正文

潮州建设局网站家装设计师工资高吗

潮州建设局网站,家装设计师工资高吗,亚洲一线产区二线产区精华,菜单设计制作网站为什么需要 ViewModel?传统开发中,当屏幕旋转时,Activity 会被销毁并重新创建,其中的临时数据(如网络请求结果、用户输入内容)会丢失。 ViewModel 的生命周期与 Activity/Fragment 的配置变化无关&#xff…

为什么需要 ViewModel?

传统开发中,当屏幕旋转时,Activity 会被销毁并重新创建,其中的临时数据(如网络请求结果、用户输入内容)会丢失。
ViewModel 的生命周期与 Activity/Fragment 的配置变化无关,它会在整个界面生命周期内保持存在,直到界面彻底销毁(如用户关闭页面)。

ViewModel 基本用法

1. 添加依赖

在 build.gradle(Module 级别)中添加依赖(确保使用最新版本)

dependencies {// ViewModel + LiveData(通常一起使用)implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2"implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.6.2"// 如果你用 Kotlin 协程implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:2.6.2"
}
2. 定义 ViewModel 类

创建一个继承 ViewModel 的类,在其中存放需要保留的数据和业务逻辑:

import androidx.lifecycle.ViewModelclass MyViewModel : ViewModel() {// 示例:存储计数器数据private var count = 0// 获取当前计数fun getCount(): Int = count// 增加计数fun incrementCount() {count++}// 清除计数fun resetCount() {count = 0}// ViewModel 销毁时调用(如页面关闭)override fun onCleared() {super.onCleared()// 释放资源,如取消网络请求、关闭数据库连接等}
}
3. 在 Activity/Fragment 中使用 ViewModel

通过 ViewModelProvider 获取 ViewModel 实例(不要自己 new 实例,否则无法保证生命周期):

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import androidx.lifecycle.ViewModelProviderclass MainActivity : AppCompatActivity() {private lateinit var viewModel: MyViewModeloverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)// 获取 ViewModel 实例(配置变化时会复用同一个实例)viewModel = ViewModelProvider(this)[MyViewModel::class.java]// 绑定 UI 控件val textView = findViewById<TextView>(R.id.textView)val incrementBtn = findViewById<Button>(R.id.incrementBtn)val resetBtn = findViewById<Button>(R.id.resetBtn)// 初始化显示updateCountText(textView)// 按钮点击事件incrementBtn.setOnClickListener {viewModel.incrementCount()updateCountText(textView)}resetBtn.setOnClickListener {viewModel.resetCount()updateCountText(textView)}}private fun updateCountText(textView: TextView) {textView.text = "当前计数:${viewModel.getCount()}"}
}

http://www.dtcms.com/a/413880.html

相关文章:

  • 上海松江 网站建设公司丰台高端网站建设
  • 南昌网站设计哪个最好怎样维护网站的安全和备份
  • 设计高端网站哪家好网站备案哪个局管
  • 网站模块分类佛山优化网站关键词
  • 东莞哪家公司做网站比较好网页制作电子教程
  • 自己建网站还是淘宝企业宣传网站制作
  • 集团网站设计公司网页设计实训报告代码
  • 网站如何做微信支付宝支付宝支付做网站租服务器需要多少钱
  • 产品营销型网站建设网站外链内链怎么做
  • 网站建设的具体任务有哪些wordpress删除文章作者
  • 学做PPT报告的网站高清图片素材网站推荐
  • 医院手机网站源码crm系统 网站建设
  • 网站推广做百度还是360中国建设银行网站诚聘英才频道
  • 中国做视频网站有哪些内容免费网站cms
  • wordpress命令执行搜索引擎优化方式
  • 怎么去建一个网站网络托管公司有哪些
  • 网站建设规划书中包含内容北京下雪
  • 新科网站建设昆明网络营销服务公司
  • 企业网站建设好的案例python电商网站开发
  • 青岛网站建设详细内容wordpress 招聘主题
  • 公司付网站会员费科目怎么做申请域名备案
  • 网站开发课程设计实验报告网站建设需要怎样的经营范围
  • 国外设计网站怎么登陆影视主题wordpress
  • 宜昌网站建设开发费用网站品质
  • 专题网站开发 交互方法免费网线
  • 住房和城乡建设部执业资格注册中心网站wordpress电商插件下载
  • 做招聘网站的需求分析合肥好的app开发公司
  • 做网站手机验证收费吗用wordpress建站之后如何优化
  • 后期网站宁波网站建设联系方法
  • 做网站流程、网页框架设计