안드로이드 자바 코틀린 기초 지식/안드로이드 기초 지식
LiveData
Everyday Growing Engineer
2023. 3. 1. 18:44
LiveData란 ?
- LiveData는 Android JetPack 중 하나이다. (Android JetPack 이란????)
- LiveData는 Data의 변경을 관찰 할 수 있는 Data Holder 클래스 입니다.
- 일반적인 observable 과는 다르게, LiveData는 lifecycle을 인지합니다. (Observable 이란????)
- 다른 app components (activity, fragments, or services)들의 lifecycle의 데이터 변화를 관찰할 수 있습니다.
LiveData는 활성상태(active)일때만 데이터를 업데이트(Update) 합니다.
- 활성상태란 STARTED 또는 RESUMED를 의미합니다.
비활동 상태에는 LiveData는 데이터의 변화를 알리지 않습니다. (Destroyed 된 상태의 lifecycle 에서는 LiveData 객체를 Observe하지 않습니다.)
LiveData 장점
1. Data와 UI간 동기화
- LiveData는 Observer 객체의 데이터 변화를 감지합니다. 그렇기 때문에, 어떤 데이터를 update 했을 때, 다시 데이터를 조회하는 코드를 쓰지 않아도 됩니다.
더보기
예를 들어 게시판을 만들 때, 사용자가 게시판에 들어오면 전체 게시글을 볼수 있는 list가 필요할 것입니다. 이 때 db를 조회해서 게시글 제목들을 조회하고 list에 뿌려주는 코드가 필요합니다. 이 상황에서 사용자가 어떤 게시글의 제목을 수정하게 된다면,
1. db에서 해당 게시글의 제목을 새로 갱신하는 코드
2. db의 전체 게시글을 다시 조회해서 list에 뿌려주는 코드가 필요합니다.
LiveData는 db의 데이터를 새로 갱신하면 데이터의 변화(Observer 객체의 데이터 변화)를 감지하고 자동으로 list의 글제목을 갱신해주기 때문에 2번 과정이 생략되는 것입니다.
2. No memory leaks 메모리 낭비를 방지
- Activity 나 Fragment 의 lifecylce이 Destroyed 되면 Observer는 LifeCycle 객체에 바인딩되기(묶이기) 때문에 스스로 사라집니다.
3. 멈춘 Activities 때문에 App이 충돌하는 일이 없습니다.
- 백 스택에 있는 액티비티와 같이 Observer의 생명주기가 비활성 상태이면, Observer는 LiveData의 이벤트를 받지 않습니다.
4. 수동 라이프사이클 처리 불필요
- LiveData는 생명주기별로 자동으로 <UI component가 데이터의 변화를 인지하고 갱신하는 것>을 관리하기 때문에 직접 생명주기를 관리하지 않아도 됩니다.
https://velog.io/@jojo_devstory/Android-LiveData...%EB%84%8C-%EB%88%84%EA%B5%AC%EB%83%90