LiveData 란?

shin_stealer·2021년 3월 16일
0

Android JetPack

목록 보기
2/3

본 게시글은 Android Developers 공식문서를 번역하여 개인적으로 공부한 자료입니다. 틀린 내용이 있을 수도 있으니 유의바랍니다.

LiveData란?

LiveData is an observable data holder class.
LiveData는 관찰가능한 데이터를 담아두는 클래스입니다.

일반적인 observable 과는 다르게, LiveData는 lifecycle을 인지합니다. 즉, 다른 app components (activity, fragments, or services)들의 lifecycle의 데이터 변화를 관찰할 수 있습니다.

LiveData는 오직 활동하는(active) lifecycle 상태인 app component observers 의 변화를 인지합니다.

비활동 상태에는 LiveData는 데이터의 변화를 알리지 않습니다.
즉, Destroyed 된 상태의 lifecycle 에서는 LiveData 객체를 Observe하지 않습니다.

LiveData는 이런 장점을 가지고 있습니다.

  1. Ensures your UI matches your data state
    UI 와 Data의 상태를 일치시킵니다.

LiveData는 observer pattern을 지향합니다. LiveData는 Observer 객체의 데이터 변화를 감지합니다. 그렇기 때문에, 어떤 데이터를 update 했을 때, 다시 데이터를 조회하는 코드를 쓰지 않아도 됩니다.

예를 들어 게시판을 만들 때, 사용자가 게시판에 들어오면 전체 게시글을 볼수 있는 list가 필요할 것입니다. 이 때 db를 조회해서 게시글 제목들을 조회하고 list에 뿌려주는 코드가 필요합니다.

이 상황에서 사용자가 어떤 게시글의 제목을 수정하게 된다면,
1. db에서 해당 게시글의 제목을 새로 갱신하는 코드
2. db의 전체 게시글을 다시 조회해서 list에 뿌려주는 코드가 필요합니다.

LiveData는 db의 데이터를 새로 갱신하면 데이터의 변화(Observer 객체의 데이터 변화)를 감지하고 자동으로 list의 글제목을 갱신해주기 때문에 2번 과정이 생략되는 것입니다.

마찬가지로 게시글을 삭제하거나 추가했을 때, 게시글 제목을 조회하여 list에 새롭게 뿌려주는 코드를 쓰지 않아도 되기 때문에 전체 코드가 간결해지고 유지 보수할 때, 신경쓸 부분이 줄어듭니다.

  1. No memory leaks
    메모리 낭비를 방지

Activity 나 Fragment 의 lifecylce이 Destroyed 되면 Observers가 clean up 되기 때문에 메모리 낭비를 방지하는 데 효과적입니다. (destroy 되어도 observers가 데이터 변화를 감지한다면 메모리를 낭비하는 꼴)

  1. No crashes due to stopped activities
    멈춘 Activities 때문에 App이 충돌하는 일이 없습니다.

Lifecycle 중에 inactive (onStop, onDestroy) 된 activity 가 있다면 LiveData는 어떤 이벤트도 받지 않습니다.

  1. No more manual lifecycle handling

LiveData는 생명주기별로 자동으로 <UI component가 데이터의 변화를 인지하고 갱신하는 것>을 관리하기 때문에 직접 생명주기를 관리하지 않아도 됩니다.

참조
https://developer.android.com/topic/libraries/architecture/livedata?authuser=1

profile
I am a Blacksmith.

0개의 댓글