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

安卓JetPack篇——Livadata

LiveData

一、什么是LiveData

1、一句话解释:

LiveData 是会自动更新 UI 的数据容器,省去手动管理数据与界面同步的麻烦。

2、核心功能:

  • 数据与界面自动绑定:数据变化时自动通知观察者(界面)更新UI,无需手动调用更新方法。
  • 生命周期感知:自动随界面的生命周期启停,避免内存泄漏或无效更新。(界面销毁后不再通知)。

​ 对比handler需要手动管理,否则会内存泄漏。

3、一句话讲原理:

使用观察者模式并配合LifeCycle,在数据变化时自动通知处于活跃状态(如 STARTED/RESUMED)的 UI 组件更新,并在 UI 销毁时自动解除观察,避免内存泄漏。

二、基本用法

1、常在ViewModel中搭配使用

class MyViewModel : ViewModel() {// 使用 MutableLiveData 存储可修改的数据private val _counter = MutableLiveData<Int>(0)// 对外暴露不可变的 LiveData(防止外部修改)val counter: LiveData<Int> = _counterfun increment() {_counter.value = _counter.value?.plus(1) // 更新数据}
}

2、在 Activity/Fragment 中观察数据

val viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
// 观察 LiveData 数据变化
viewModel.counter.observe(this) { count ->
// 当 counter 数据变化时,自动更新 UI(仅在界面活跃时触发)binding.textView.text = "Count: $count"
}
binding.button.setOnClickListener {viewModel.increment() // 触发数据更新
}

三、核心方法

1、postvalue:一般在子线程中使用

2、setvalue:必须在主线程中使用

http://www.lryc.cn/news/572121.html

相关文章:

  • 无人机电机模块技术分析
  • Vue-11-前端框架Vue之应用基础父组件传值到子组件props的使用
  • 破局基建困局:国有平台公司数字化转型的生态重构
  • Spring Boot 集成 Elasticsearch(含 ElasticsearchRestTemplate 示例)
  • 华为网路设备学习-25(路由器OSPF - 特性专题 二)
  • CSS语法中的选择器与属性详解
  • day42-硬件学习之温度传感器及(ARM体系架构)
  • AR/VR显示为何视场受限?OAS对标波导案例来解决
  • 【跨界新视野】信号处理遇上VR/AR:下一代沉浸体验的核心技术与您的发表蓝海
  • C++实现异步(重叠)管道通信
  • 【MySQL基础】MySQL内置函数全面解析:提升你的数据库操作效率
  • ③-1实现 FastAdmin 默认开启通用搜索功能的方法
  • 教学的新革命!大模型生成讲解,Manim 打造动画视频
  • 【MySQL】SQL基础
  • 50-Oracle awr报告生成-实操
  • 关于AB PLC的ethernet/IP 通信 c++搭建
  • 人机融合智能 | 人智交互语境下的设计新模态
  • Shell脚本应用及实战演练
  • SpringBoot电脑商城项目--收获地址列表
  • 数字华容道智力小游戏微信流量主小程序开源
  • 青少年编程与数学 01-012 通用应用软件简介 02 WPS Office办公软件
  • C#实现语音预处理:降噪、静音检测、自动增益
  • 【JavaEE】HTTPS协议
  • 【unitrix】 3.3 算术取负运算(neg.rs)
  • Kafka副本机制源码深度剖析:从数据同步到故障转移
  • craw14ai 框架的入门讲解和实战指南——基于Python的智能爬虫框架,集成AI(如NLP/OCR)实现自动化数据采集与处理
  • 3.1 Hector_mapping初体验
  • 前端如何通过 Blob 下载 Excel 文件
  • 容器运行时保护:用Falco构建云原生安全防线
  • CFG的前世今生