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

西安网站微信开发建设网站计划 ppt

西安网站微信开发,建设网站计划 ppt,wordpress怎么设置404伪静态,梧州自助建站seoAndroid LiveData 介绍 系列文章目录前言一、LiveData是什么?二、简单使用依赖测试数据准备1.创建可观察的livedata2.观察它3.更新它 总结 系列文章目录 Android LiveData 介绍(本文) 前言 本系列根据官网介绍Jetpack中的数据通信组件&…

Android LiveData 介绍

  • 系列文章目录
  • 前言
  • 一、LiveData是什么?
  • 二、简单使用
    • 依赖
    • 测试数据准备
    • 1.创建可观察的livedata
    • 2.观察它
    • 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.LiveData

LiveData属于lifecycle,因此无需引入额外依赖,最新版的andorid studio 建项目就自带

测试数据准备

因为,国庆节写的这篇文章,所以本例就写一个过国庆的例子。

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TextViewandroid:id="@+id/tv_national_day"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello World!"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><Buttonandroid:id="@+id/bt_national_day"android:text="玩一天"android:layout_width="match_parent"android:layout_height="wrap_content"app:layout_constraintTop_toBottomOf="@+id/tv_national_day"/></androidx.constraintlayout.widget.ConstraintLayout>

MainActivity:


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 = findViewById<Button>(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 : MutableLiveData<Int> = 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 = findViewById<Button>(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 : MutableLiveData<Int> = 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 = findViewById<Button>(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.yayakq.cn/news/544747/

相关文章:

  • 内链好的网站手机网页视频下载工具
  • 外国人做的古文字网站discuz主题模板
  • 外贸 网站推广计划线上网站建设需求
  • 上住房和城乡建设部网站如何设置域名
  • 如何建设一个不备案的网站wordpress对比
  • 电子商务服务网站浦江网站建设微信开发
  • 企业网站开发方案网页升级紧急通知5151
  • 不是万维网的网站电子商务平台自身提供的数据工具
  • 织梦软件开发网站模板下载求个网站你们知道的
  • 北京市朝阳区住房建设网站h5编辑软件
  • 超酷网站模板时代汇创网站建设
  • 中国网站建设公司排行免费空间能放网站吗
  • 自己做的视频网站如何赚钱吗自己怎么设计公园
  • 微网站制作公司个人域名备案快的网站
  • 免费网站怎么样做网站怎么插音乐循环
  • 网站开发价位评估百度seo排名软
  • 书生网站建站之星怎么安装
  • 网站建设的进度表搜狗友链交换
  • 辽源做网站公司做仿制网站
  • 物流网站方案wordpress侧栏弹窗登录
  • 网站建设管理经验国外一个专门做配乐的网站
  • 不会被封的网站谁做网络营销推广方案案例
  • 芜湖有没有网站建设公司吗长沙专业网站设计公司
  • 网站搜索功能怎样做安全员考试报名入口官网
  • 怎么创办一个网站做网站要用到哪些架包
  • 网站违规词处罚做网站的网站建设部门的职责
  • 商城购物网站定制阿里云轻量应用服务器wordpress
  • 网站界面设计图片wordpress 客户端配置
  • 内网网站搭建工具网站推广排名优化
  • 莱芜网站建设费用东莞建站公司快荐全网天下特别好