[안드로이드] LiveData - setValue(), postValue()

Chloe Choi·2021년 5월 18일
0

안드로이드

목록 보기
16/17

LiveData

Observable한 lifecycle-aware 데이터 홀더 클래스

보통 View에서 ViewHolder의 data를 observe 할 때 사용한다!
ViewHolder의 LiveData는 value가 변경되었을 때 그 변화를 observers에 notify 하는데, value 설정 시 다음 두 function을 사용할 수 있다!

  • setValue()
  • postValue()

두 function의 차이점을 알아보자

setValue()

main thread에서 즉시 그 값을 변경한다
따라서, 바로 dispatch 되어 그 값을 확인할 수 있다!

postValue()

new Handler(Looper.mainLooper()).post(() -> setValue())

내부적으로 Handler를 통해 setValue를 진행한다

백그라운드에서 실행해 main looper로 보낸다
따라서, 바로 main thread에서 확인되지 않을 수 있다!

정리하자면,

  • main thread에서 호출 -> setValue() 또는 postValue()
  • background thread에서 호출 -> postValue()
  • 즉시 반영 필요 -> setValue()
profile
똑딱똑딱

2개의 댓글

comment-user-thumbnail
2021년 5월 20일

축하해요 ❤️

1개의 답글