中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

可做商業(yè)用途的圖片網(wǎng)站新開(kāi)網(wǎng)店自己如何推廣

可做商業(yè)用途的圖片網(wǎng)站,新開(kāi)網(wǎng)店自己如何推廣,最討厭網(wǎng)站,python做流量網(wǎng)站Android LiveData 介紹 系列文章目錄前言一、LiveData是什么?二、簡(jiǎn)單使用依賴(lài)測(cè)試數(shù)據(jù)準(zhǔn)備1.創(chuàng)建可觀察的livedata2.觀察它3.更新它 總結(jié) 系列文章目錄 Android LiveData 介紹(本文) 前言 本系列根據(jù)官網(wǎng)介紹Jetpack中的數(shù)據(jù)通信組件&…

Android LiveData 介紹

  • 系列文章目錄
  • 前言
  • 一、LiveData是什么?
  • 二、簡(jiǎn)單使用
    • 依賴(lài)
    • 測(cè)試數(shù)據(jù)準(zhǔn)備
    • 1.創(chuàng)建可觀察的livedata
    • 2.觀察它
    • 3.更新它
  • 總結(jié)


系列文章目錄

Android LiveData 介紹(本文)


前言

本系列根據(jù)官網(wǎng)介紹Jetpack中的數(shù)據(jù)通信組件,本文介紹LiveData。在介紹LiveData之前,我們需要知道安卓官方推薦我們?cè)趘iewmodel中處理業(yè)務(wù)或者數(shù)據(jù)的一些運(yùn)算和網(wǎng)絡(luò)請(qǐng)求,并通過(guò)觀察數(shù)據(jù)的變化,來(lái)通知activity或者fragment數(shù)據(jù)更新。

在這里插入圖片描述


一、LiveData是什么?

我們先用官方的話來(lái)解釋一下:

LiveData 是一種可觀察的數(shù)據(jù)存儲(chǔ)器類(lèi)。與常規(guī)的可觀察類(lèi)不同,LiveData 具有生命周期感知能力,意指它遵循其他應(yīng)用組件(如 activity、fragment 或 service)的生命周期。這種感知能力可確保 LiveData 僅更新處于活躍生命周期狀態(tài)的應(yīng)用組件觀察者。

那么根據(jù)官網(wǎng)的總結(jié),我們翻譯成人話,就是Livedata是用于儲(chǔ)存我們需要數(shù)據(jù)的一個(gè)類(lèi),那么為什么不直接new一個(gè)對(duì)象要多加一個(gè)LiveData呢?因?yàn)長(zhǎng)iveData可以讓使用到這個(gè)數(shù)據(jù)的組件的生命周期和這個(gè)數(shù)據(jù)同步, 以activity為例,當(dāng)activity走到onDestroy時(shí),數(shù)據(jù)也同樣會(huì)被銷(xiāo)毀,因此也避免了activity銷(xiāo)毀了,activity持有的對(duì)象還活著而導(dǎo)致內(nèi)存泄漏。 簡(jiǎn)單來(lái)說(shuō),Livedata就是為了解決這個(gè)問(wèn)題而誕生的,它讓開(kāi)發(fā)者可以將更多的精力投入到具體的邏輯和功能中,而不是陷落在各個(gè)組件的生命周期的管理中。

二、簡(jiǎn)單使用

前面說(shuō)到,LiveData 是一種可觀察的數(shù)據(jù)存儲(chǔ)器類(lèi),因此Livedata的使用可以簡(jiǎn)單的分為三步,及創(chuàng)建可觀察的livedata,觀察它,更新它

我們先看效果,然后實(shí)戰(zhàn)

通過(guò)livedata更新數(shù)據(jù)
在這里插入圖片描述
點(diǎn)擊后
在這里插入圖片描述

依賴(lài)

import androidx.lifecycle.LiveData

LiveData屬于lifecycle,因此無(wú)需引入額外依賴(lài),最新版的andorid studio 建項(xiàng)目就自帶

測(cè)試數(shù)據(jù)準(zhǔn)備

因?yàn)?#xff0c;國(guó)慶節(jié)寫(xiě)的這篇文章,所以本例就寫(xiě)一個(gè)過(guò)國(guó)慶的例子。

布局文件:

<?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 數(shù)據(jù)請(qǐng)求}}}

1.創(chuàng)建可觀察的livedata

新建MainViewModel類(lèi)

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)}

國(guó)慶節(jié)嘛,咱們要有點(diǎn)國(guó)慶味道,上例代碼通過(guò)創(chuàng)建MutableLiveData 創(chuàng)建了一個(gè)名為nationalDayLiveData 的可觀察對(duì)象。MutableLiveData 是基于LiveData的封裝,暴露了setValue和postValue方法

在MainActivity中添加關(guān)于viewmodel的初始化,這時(shí)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 數(shù)據(jù)請(qǐng)求}}private fun initViewModel() {viewModel = MainViewModel(application)}}

2.觀察它

在本例中,數(shù)據(jù)會(huì)在activity中更新,所以觀察livedata對(duì)象也將進(jìn)行在activity中,因此我們?cè)贛ainActivity中新增觀察livedata的代碼initObserve()

代碼如下(示例):

    private fun initObserve() {viewModel.nationalDayLiveData.observe(this) {textView.text = "國(guó)慶節(jié)還有$it 天"}}

3.更新它

因?yàn)閍pp并不應(yīng)該在activity中處理數(shù)據(jù)的具體邏輯,所以更新的方法在viewmodel中編寫(xiě)。

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)}/*** 偽代碼,實(shí)際業(yè)務(wù)中這里的返回應(yīng)該是網(wǎng)絡(luò)請(qǐng)求獲取返回?cái)?shù)據(jù)這樣子*/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 = "國(guó)慶節(jié)還有$it 天"}}
}

上例代碼中,我們通過(guò)MutableLiveData 初始化了一個(gè) nationalDayLiveData對(duì)象,然后通過(guò)observe觀察nationalDayLiveData對(duì)象,最后通過(guò)postValue更新nationalDayLiveData對(duì)象,最后將數(shù)據(jù)更新在UI上。


總結(jié)

以上就是今天要講的內(nèi)容,本文簡(jiǎn)單介紹了LiveData是什么及其使用,通過(guò)創(chuàng)建觀察更新六字口訣初步掌握LiveData的使用。

http://www.risenshineclean.com/news/37434.html

相關(guān)文章:

  • DW做網(wǎng)站下拉列表怎么做寧波seo怎么做推廣渠道
  • 唐山盤(pán)古做網(wǎng)站多少錢(qián)長(zhǎng)尾詞seo排名
  • 政府網(wǎng)站建設(shè)調(diào)研報(bào)告營(yíng)銷(xiāo)型網(wǎng)站優(yōu)化
  • 運(yùn)營(yíng)推廣的網(wǎng)站有哪些亞洲足球最新排名
  • 哪些網(wǎng)站做二手挖機(jī)微信社群營(yíng)銷(xiāo)推廣方案
  • 國(guó)內(nèi)互動(dòng)網(wǎng)站建設(shè)江門(mén)網(wǎng)站定制多少錢(qián)
  • 申請(qǐng)免費(fèi)網(wǎng)站建設(shè)seo排名優(yōu)化
  • 汕頭建設(shè)吧百度貼吧seo外包優(yōu)化公司
  • ecshop商城網(wǎng)站建設(shè)seo搜索優(yōu)化工具
  • 做網(wǎng)站制作需要多少錢(qián)最新國(guó)內(nèi)新聞重大事件
  • 宜賓網(wǎng)站建設(shè)費(fèi)用抖音推廣引流
  • 阿里云網(wǎng)站建設(shè)方案書(shū)模板網(wǎng)站搜索引擎優(yōu)化診斷
  • 在百度上做網(wǎng)站西安百度推廣優(yōu)化托管
  • 做金館長(zhǎng)網(wǎng)站網(wǎng)站寧寧網(wǎng)seo
  • 網(wǎng)站建設(shè)人才百度云怎么找資源
  • 任丘做網(wǎng)站現(xiàn)在什么app引流效果好
  • 北京疫情有多嚴(yán)重網(wǎng)站推廣優(yōu)化平臺(tái)
  • 樓盤(pán)銷(xiāo)售管理網(wǎng)站開(kāi)發(fā)資源官網(wǎng)關(guān)鍵詞優(yōu)化價(jià)格
  • 比價(jià)網(wǎng)官網(wǎng)安卓神級(jí)系統(tǒng)優(yōu)化工具
  • 常州市建設(shè)局網(wǎng)站專(zhuān)業(yè)的網(wǎng)站優(yōu)化公司排名
  • 競(jìng)價(jià)網(wǎng)站如何設(shè)計(jì)廣州seo優(yōu)化費(fèi)用
  • 各大招聘網(wǎng)站濟(jì)南百度推廣代理商
  • wordpress數(shù)據(jù)庫(kù)發(fā)布文章做網(wǎng)絡(luò)優(yōu)化哪家公司比較好
  • 可以做代發(fā)貨源的網(wǎng)站seo外包公司怎么樣
  • 公眾號(hào)做視頻網(wǎng)站會(huì)封嗎市場(chǎng)推廣方案范文
  • 建設(shè)一個(gè)網(wǎng)站需要什么西安網(wǎng)站seo費(fèi)用
  • 禪城網(wǎng)站建設(shè)報(bào)價(jià)網(wǎng)站首頁(yè)排名seo搜索優(yōu)化
  • 電子商務(wù)網(wǎng)站建設(shè)和管理的含義百度競(jìng)價(jià)登陸
  • vs網(wǎng)站畢業(yè)設(shè)計(jì)怎么做西安seo網(wǎng)絡(luò)推廣
  • b2b b2c 網(wǎng)站建設(shè)seo網(wǎng)站關(guān)鍵詞優(yōu)化多少錢(qián)