오늘도 더 나은 코드를 작성하였습니까?

LiveData 개요와 이점 본문

Android Jetpack Architecture/LiveData

LiveData 개요와 이점

hik14 2020. 8. 15. 03:08

LiveData 개요

 

LiveData는  관찰 가능한(Observable) 한 데이터 홀더 클래스이다.

LiveData는 LifeCycle을 인식한다. 즉,  activity, fragment service 등 안드로이드 구성요소의 생명주기를 인식.

LiveData는 활성 수명 주기 상태에 있는 앱 구성요소 관찰자(Observer)만 데이터를 업데이트합니다.

 

LiveData는 Observer 패턴을 따른다. 데이터의 변경이 일어났을 때 콜백으로 받아 처리할 수 있습니다.

이렇게 데이터의 변경이 될 때마다 콜백을 실행하는 활성화 상태가 아닌 경우 Lifecycle을 알기 때문에 필요하지 않을 땐 콜백이 실행 안된다.

 

LifecycleOwner 인터페이스를 구현하는 객체(Activity, fragment)를 매개변수로 하는 observer() 메서드를 통해 옵서버를 등록한다.

 

LifecycleOwner 인터페이스를 구현하는 객체와 페어링 된 관찰자를 등록할 수 있습니다.

이 관계를 사용하면 관찰자에 대응되는 Lifecycle 객체(activity fragment)의 상태가 DESTROYED DESTROYED로 변경될 때 관찰자를 삭제할 수 있습니다.

 

특히, activity fragment가 LiveData 객체를 안전하게 관찰할 수 있고  activity fragment의 수명 주기가 끝나는 즉시 수신 거부되어 누출을 걱정하지 않아도 되므로 유용합니다.

 

LiveData 사용 시 이점

1. UI와 데이터 상태의 동기화

 

LiveData는 관찰자 패턴을 따른다. LiveData는 수명 주기 상태가 변경될 때 Observer 객체에 알립니다. 코드를 통합하여 이러한 Observer 객체에 UI를 업데이트할 수 있습니다. 앱 데이터가 변경될 때마다 UI를 업데이트하는 대신, 변경이 발생할 때마다 관찰자가 UI를 업데이트할 수 있습니다.

 

2. 메모리 누수 방지

 

Observer는 Lifecycle에 바인딩되며 생명주기 상태가 DESTROYED 되면 스스로 정리하기 때문에 별도의 리소스 해제하는 코드를 Activity나 fragment에 작성할 필요가 없다.

 

3. 갑작스러운 Activity 비정상 종료 시에도 안전함.

 

관찰자의 수명 주기가 비활성 상태(예: 활동이 백 스택에 있음)이면 관찰자는 어떤 LiveData 이벤트도 수신하지 않습니다

 

4. 생명주기에 대한 수동 처리를 하지 않는다

 

UI 구성요소는 관련 데이터를 관찰하기만 할 뿐 관찰을 중지하거나 다시 시작하지 않습니다. LiveData는 관찰하는 동안 관련 수명 주기 상태의 변경을 인식하므로 이 모든 것을 자동으로 관리합니다.

 

5. 최신의 데이터를 유지한다.

 

수명 주기가 비활성화되면 다시 활성화될 때 최신 데이터를 수신합니다. 예를 들어 백그라운드에 있었던 Activity는 포그라운드로 돌아온 직후 최신 데이터를 받습니다.

 

6. 적절한 구성 변경

 

구성 변경(예: 기기 회전)으로 인해 활동이나 프래그먼트가 다시 생성되면 사용할 수 있는 최신 정보를 즉시 수신합니다.

 

7. 자원공유

 

LiveData를 상속하여 싱글톤 패턴으로 사용할 수도 있다. 안드로이드 시스템 서비스와 같은 곳에서 단 한 번만 연결하고,

앱 내에서 다중으로 접근하여 이 서비스를 관찰할 수 있다.

'Android Jetpack Architecture > LiveData' 카테고리의 다른 글

DataBinding과 LiveData  (0) 2020.08.18
LiveData( MediatorLiveData )  (0) 2020.08.18
LiveData 변환( Transformation class )  (0) 2020.08.17
LiveData 사용 하기  (0) 2020.08.15