Android

[Android] LiveData

2023. 2. 6. 18:21
반응형

LiveData는 코드에 어떤 변화가 있거나 데이터에 대한 업데이트가 발생한다면 LiveData를 사용하여 activity나 fragment를 자동으로 업데이트하는 코드를 작성할 수 있습니다.

 

LiveData는 lifecycle를 인식하는 observable data holder 클래스 입니다.

안드로이드에서는 lifecycle이 있는 3개의 앱 구성요소가 있습니다. (activity, fragment, service)는 LiveData개체의 observer를 사용할 수 있습니다.

LiveData는 활성중인 생명주기 상태의 observer만 업데이트합니다.

 

LiveData 장점

  • LiveData는 앱 데이터가 변경되면 UI를 자동으로 업데이트합니다.
    - LiveData는 항상 최신의 데이터를 갖고 있습니다.
  • LiveData로 생명 주기를 수동으로 처리하기 위해 코드를 작성할 필요가 없습니다.
    - 생명주기 상태를 인식하는 LiveData는 변화거나, 연결된 생명주기가 파괴되면 스스로 정리합니다.
  • LiveData는 activity나 fragment로 인한 메모리 누수나 충돌이 발생하지 않습니다.
  • LiveData를 사용하여 앱의 여러 구성 요소 간에 앱 서비스를 공유할 수 있습니다.

 

MainActivityViewModel클래스

package com.anushka.viewmodeldemo1

import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel

class MainActivityViewModel : ViewModel() {
    private var count = MutableLiveData<Int>()
    val countData : LiveData<Int>
    get() = count

    init {
        count.value = 0
    }

    fun updatedCount(){
        count.value = (count.value)?.plus(1)
    }
}

 

MutableLiveData와 LiveData의 차이점은 무었일까?

  • LiveData는 데이터를 읽을 수만 있습니다. 해당 데이터를 업데이트 할 수 없습니다.
  • MutableLiveData는 LiveData 클래스의 하위 클래스입니다.
  • MutableLiveData를 사용하면 데이터를 변경할수 있습니다.

 

value 속성을 가져와서 할당해야 합니다.

ViewModel에서 총 값을 보유하기 위해 Int 유형의 MutableLiveData 객체를 생성했습니다. 그리고 private을 사용했습니다.

이것은 데이터를 캡슐화하는 방법입니다.

데이터를 바꾸지 않을 것이므로 LiveData를 사용합니다. 그리고 Kotlin 속성을 사용하여 getter 함수에서 LiveData 객체를 반환할 수 있습니다.

 

MainActivity클래스

package com.anushka.viewmodeldemo1

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.databinding.DataBindingUtil
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import com.anushka.viewmodeldemo1.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {
    private lateinit var binding: ActivityMainBinding
    private lateinit var viewModel: MainActivityViewModel
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
        viewModel = ViewModelProvider(this)[MainActivityViewModel::class.java]

        viewModel.count.observe(this, Observer {
            binding.countText.text = it.toString()
        })

        binding.button.setOnClickListener {
            viewModel.updatedCount()
        }
    }
}
 

 

LiveData개체를 사용하여 ViewModel에서 데이터를 최신 상태로 유지하는 방법입니다.

반응형
저작자표시 비영리 변경금지 (새창열림)

'Android' 카테고리의 다른 글

[Android] Lottie Splash  (0) 2023.02.24
[Android] 양방향 DataBinding  (0) 2023.02.09
[Android] ViewModel  (0) 2023.02.04
[Android] DataBinding  (0) 2023.01.29
무료 아이콘, BGM, 이미지 제공 사이트  (0) 2022.12.17
'Android' 카테고리의 다른 글
  • [Android] Lottie Splash
  • [Android] 양방향 DataBinding
  • [Android] ViewModel
  • [Android] DataBinding
yunJaem06
yunJaem06
yunJaem06
비바윤
yunJaem06
전체
오늘
어제
  • 전체 (147)
    • Algorithm (121)
      • [알고리즘]BACKJOON - Java&Kotli.. (98)
      • Java알고리즘 문제풀이 & Kotlin (23)
    • Kotlin (4)
    • Android (17)
    • CS (1)
      • 소프트웨어공학 (1)
      • 운영체제 (0)
      • 컴퓨터구조 (0)
    • 내가 좋아하는 맛집 :) (0)
    • 다시 볼만한 영화 & 드라마 (0)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • zxing
  • kotlin
  • 특정 문자 뒤집기
  • Livedata
  • qr
  • 중복문자제거
  • ViewModel
  • 1장
  • 안드로이드
  • lottie
  • MutableLiveData
  • ViewModelFactory
  • 코틀린
  • Lifecycle
  • Android
  • DataBinding
  • 배열
  • 알고리즘
  • 가위 바위 보
  • Kotiln
  • 양방향
  • 3장
  • Java
  • 라이브러리
  • Kotlin In Action
  • 생명주기
  • reversed
  • splash화면
  • 캡슐화
  • AndroidViewModel

최근 댓글

최근 글

hELLO · Designed By 정상우.
yunJaem06
[Android] LiveData
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.