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

惠州顺德网站建设金牛区建设局网站

惠州顺德网站建设,金牛区建设局网站,如何将网站部署到服务器,做彩票网站怎么样Android LiveData 介绍 系列文章目录前言一、LiveData是什么#xff1f;二、简单使用依赖测试数据准备1.创建可观察的livedata2.观察它3.更新它 总结 系列文章目录 Android LiveData 介绍#xff08;本文#xff09; 前言 本系列根据官网介绍Jetpack中的数据通信组件… Android LiveData 介绍 系列文章目录前言一、LiveData是什么二、简单使用依赖测试数据准备1.创建可观察的livedata2.观察它3.更新它 总结 系列文章目录 Android LiveData 介绍本文 前言 本系列根据官网介绍Jetpack中的数据通信组件本文介绍LiveData。在介绍LiveData之前我们需要知道安卓官方推荐我们在viewmodel中处理业务或者数据的一些运算和网络请求并通过观察数据的变化来通知activity或者fragment数据更新。 一、LiveData是什么 我们先用官方的话来解释一下 LiveData 是一种可观察的数据存储器类。与常规的可观察类不同LiveData 具有生命周期感知能力意指它遵循其他应用组件如 activity、fragment 或 service的生命周期。这种感知能力可确保 LiveData 仅更新处于活跃生命周期状态的应用组件观察者。 那么根据官网的总结我们翻译成人话就是Livedata是用于储存我们需要数据的一个类那么为什么不直接new一个对象要多加一个LiveData呢因为LiveData可以让使用到这个数据的组件的生命周期和这个数据同步 以activity为例当activity走到onDestroy时数据也同样会被销毁因此也避免了activity销毁了activity持有的对象还活着而导致内存泄漏。 简单来说Livedata就是为了解决这个问题而诞生的它让开发者可以将更多的精力投入到具体的逻辑和功能中而不是陷落在各个组件的生命周期的管理中。 二、简单使用 前面说到LiveData 是一种可观察的数据存储器类因此Livedata的使用可以简单的分为三步及创建可观察的livedata观察它更新它 我们先看效果然后实战 通过livedata更新数据 点击后 依赖 import androidx.lifecycle.LiveDataLiveData属于lifecycle因此无需引入额外依赖最新版的andorid studio 建项目就自带 测试数据准备 因为国庆节写的这篇文章所以本例就写一个过国庆的例子。 布局文件 ?xml version1.0 encodingutf-8? androidx.constraintlayout.widget.ConstraintLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.MainActivityTextViewandroid:idid/tv_national_dayandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textHello World!app:layout_constraintBottom_toBottomOfparentapp:layout_constraintEnd_toEndOfparentapp:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toTopOfparent /Buttonandroid:idid/bt_national_dayandroid:text玩一天android:layout_widthmatch_parentandroid:layout_heightwrap_contentapp:layout_constraintTop_toBottomOfid/tv_national_day//androidx.constraintlayout.widget.ConstraintLayoutMainActivity class MainActivity : AppCompatActivity() {private lateinit var textView : TextViewoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)initView()}private fun initView() {textView findViewById(R.id.tv_national_day)val button findViewByIdButton(R.id.bt_national_day)button.setOnClickListener {//todo 数据请求}}}1.创建可观察的livedata 新建MainViewModel类 import android.app.Application import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.MutableLiveData/*** author zengyifeng* date createDate:2023-09-30* brief description ViewModel*/ class MainViewModel(application: Application) : AndroidViewModel(application) {var nationalDayLiveData : MutableLiveDataInt MutableLiveData(8)}国庆节嘛咱们要有点国庆味道上例代码通过创建MutableLiveData 创建了一个名为nationalDayLiveData 的可观察对象。MutableLiveData 是基于LiveData的封装暴露了setValue和postValue方法 在MainActivity中添加关于viewmodel的初始化这时MainActivity代码如下 import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.Button import android.widget.TextViewclass MainActivity : AppCompatActivity() {private lateinit var viewModel : MainViewModel private lateinit var textView : TextViewoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)initView()initViewModel()}private fun initView() {textView findViewById(R.id.tv_national_day)val button findViewByIdButton(R.id.bt_national_day)button.setOnClickListener {//todo 数据请求}}private fun initViewModel() {viewModel MainViewModel(application)}}2.观察它 在本例中数据会在activity中更新所以观察livedata对象也将进行在activity中因此我们在MainActivity中新增观察livedata的代码initObserve() 代码如下示例 private fun initObserve() {viewModel.nationalDayLiveData.observe(this) {textView.text 国庆节还有$it 天}}3.更新它 因为app并不应该在activity中处理数据的具体逻辑所以更新的方法在viewmodel中编写。 viewmodel的代码更新为如下 import android.app.Application import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.MutableLiveData/*** author zengyifeng* date createDate:2023-09-30* brief description ViewModel*/ class MainViewModel(application: Application) : AndroidViewModel(application) {var nationalDayLiveData : MutableLiveDataInt MutableLiveData(8)fun setNationalDay(day : Int){val myDay getNationalDay(day)nationalDayLiveData.postValue(myDay)}/*** 伪代码实际业务中这里的返回应该是网络请求获取返回数据这样子*/private var nationalDay 8private fun getNationalDay(day : Int): Int{nationalDay - dayreturn nationalDay}}而activity代码最终如下 import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.Button import android.widget.TextViewclass MainActivity : AppCompatActivity() {private lateinit var viewModel : MainViewModel private lateinit var textView : TextViewoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)initView()initViewModel()initObserve()}private fun initView() {textView findViewById(R.id.tv_national_day)val button findViewByIdButton(R.id.bt_national_day)button.setOnClickListener {viewModel.setNationalDay(1)}}private fun initViewModel() {viewModel MainViewModel(application)viewModel.setNationalDay(0)}private fun initObserve() {viewModel.nationalDayLiveData.observe(this) {textView.text 国庆节还有$it 天}} }上例代码中我们通过MutableLiveData 初始化了一个 nationalDayLiveData对象然后通过observe观察nationalDayLiveData对象最后通过postValue更新nationalDayLiveData对象最后将数据更新在UI上。 总结 以上就是今天要讲的内容本文简单介绍了LiveData是什么及其使用通过创建观察更新六字口诀初步掌握LiveData的使用。
http://www.w-s-a.com/news/306906/

相关文章:

  • 有关于网站建设的参考文献宁波seo网络推广公司
  • 网站设配色个人主页介绍文案
  • 网站seo相关设置优化网站建设的好处
  • 上海市建设工程安全生产协会网站郴州网站设计公司
  • 网站大型网页游戏自己搭建服务器做视频网站
  • 建立网站企业wordpress用户名密码破解
  • 网站管理助手建站教程国外网站做acm题目比较好
  • 网站开发框架排行专业网页制作服务商
  • 企业网站建设入账政务网站建设信息
  • 网络平台建设是什么江门排名优化怎么做
  • 响应式旅游网站模板下载网址做
  • 个人做网站名称可以随意更改吗惠州网站推广排名
  • 自己建设一个网站步骤网站认证怎么认证
  • 深圳建站公司开发费用沧州手机建站哪家好
  • 兰州网站设计公司排名百度怎么发布短视频
  • 大连模板开发建站泰州网站建设策划方案
  • 厦门好的网站设计局域网内建网站
  • 关键词那种网站正版网页游戏平台排行榜
  • 网站自助建设平台创建网址快捷方式
  • 坑梓网站建设包括哪些成都网站建设优创
  • 重庆网站seo公司哪家好超级优化大师
  • 成都网站建设推广详情邵阳市住房和城乡建设局网站
  • 淄博网站推广猎头公司有哪些
  • 局域网内建立网站90设计网怎么样
  • 域名备案和网站备案有什么不同工程项目建设网站
  • 做网站难吗?wordpress评论qq
  • 权威网站优化价格电子商务静态网站建设实验报告
  • 公司如何办网站北京网站建设公司内江
  • 六安建设网站企业营业执照查询系统入口
  • a5网站建设如果建设淘宝导购网站