LiveData VS Databinding Observable

2020. 10. 10. 17:14모바일/Android_Java

LiveData

  • 일반적인 Observable과는 다르게 LiveData는 안드로이드 생명주기(LifeCycle)를 알고 있습니다
  • 액티비티나, 프레그먼트, 서비스 등과 같은 안드로이드 컴포넌트의 생명주기(Lifecycle)를 인식하며 그에따라 LiveData는 활성상태(active)일때만 데이터를 업데이트(Update) 합니다.

1. 장점

  • 메모리 누수(Memory Leak)가 없습니다.
    Observer 객체는 안드로이드 생명주기 객체와 결합되어 있기 때문에 컴포넌트가 Destroy 될 경우 메모리상에서 스스로 해제합니다.
  • Stop 상태의 액티비티와 Crash가 발생하지 않습니다.
    액티비티가 Back Stack에 있는 것처럼 Observer의 생명주기가 inactive(비활성화) 일 경우, Observer는 LiveData의 어떤 이벤트도 수신하지 않습니다.
  • 생명주기에 대한 추가적인 handling을 하지 않아도 됩니다.
    LiveData가 안드로이드 생명주기에 따른 Observing을 자동으로 관리를 해주기 때문에 UI 컴포넌트는 그저 관련 있는 데이터를 "관찰"하기만 하면 됩니다.
  • 항상 최신 데이터를 유지합니다.
    화면 구성이 변경되어도 데이터를 유지합니다.
    예를 들어, 디바이스를 회전하여 세로에서 가로로 화면이 변경될 경우에도 LiveData는 회전하기 전의 최신 상태를 즉시 받아옵니다.
  • 자원(Resource)를 공유할 수 있습니다.
    LiveData를 상속하여 자신만의 LiveData클래스를 구현할 수 있고 싱글톤 패턴을 이용하여 시스템 서비스를 둘러싸면(Wrap) 앱 어디에서나 자원을 공유 할 수 있습니다.

2. 사용예

참조 : https://velog.io/@jojo_devstory/Android-LiveData...%EB%84%8C-%EB%88%84%EA%B5%AC%EB%83%90

Databinding Observable

  • 데이터의 변경 사항을 감지하고 알려주는 객체로써 LiveData와 비슷하다.
  • xml에 직접 사용 가능하다

1. 장점

2. 사용 예

class User{
    public final ObservableField<String> firstName = new ObservableField<>();
}

'모바일 > Android_Java' 카테고리의 다른 글

자바 용어정리  (0) 2020.10.24
Glide란?  (0) 2020.10.12
[Android]Timber 사용하기  (0) 2020.10.10
NDK와 OpenCV  (0) 2020.09.30
retrofit path vs query  (0) 2020.09.26