Android Kotlin Fundamentals 05.2 #8 :Summary

 

LiveData


  • LiveData는 Android Architecture Component중 하나이며, Observable 데이터를 가지고 있는 클래스 입니다. 또한 LiveData는 안드로이드 라이프 사이클을 인지하고 있습니다.
  • 데이터가 업데이트 되었을 때, 자동적으로 UI를 업데이트 하기 위해 LiveData를 사용합니다.
  • LiveData는 Observable입니다. 이것은 LiveData가 가지고 있는 데이터가 업데이트 되었을 때, activity나 fragment가 이를 인지 할 수 있다는 의미입니다.
  • LiveData는 데이터를 가지고 있고, 이 데이터는 어떤 데이터 타입도 가능합니다.
  • LiveData는 안드로이드 라이프사이클을 알고 있습니다. 그래서 LiveData는 STARTED, RESUME과 같이 현재 액티브상태의 라이프사이클일 때만 observer들을 업데이트 합니다.

To add LiveData

 

ViewModel이 가지고 있는 데이터를 LiveData 혹은 MutableLiveData로 변경합니다.

MutableLiveData는 변경가능한 LiveData객체를 가지고 있습니다. MutableLiveData는 generic 클래스이기 때문에 가지고 있는 데이터의 유형을 정의해야 합니다.

   // The current word
    var word = MutableLiveData<String>()

 

 

 

LiveData가 가지고 있는 데이터를 변경하기 위해서는 setValue() 메소드를 사용합니다. 혹은 value값에 직접 접근하여 변경할 수도 있습니다.

 

To encapsulate LiveData (라이브 데이터를 캡슐화하려면?)

  • ViewModel안에 LiveData는 수정가능 해야 합니다. ViewModel 밖에서는 LiveData를 읽는 것만 가능하게 하는 것이 좋습니다. 해당 사항은 코틀린의 backing propery를 사용해서 구현이 가능 합니다.
  • 코틀린 backing property는 해당 값이 아닌 다른 값을 return할 수 있도록 해줍니다.
  • LiveData를 캡슐화 하기 위해 MutableLiveData(수정가능)은 private 접근지시자로 선언해 줍니다. 그리고 LiveData의 backup propery를 리턴 해줍니다.
// The current score
private val _score = MutableLiveData<Int>()
val score: LiveData<Int>
   get() = _score

 

Observable LiveData

 

  • LiveData는 observer pattern을 따릅니다. "observable"은 LiveData객체 이며, observer는 프레그먼트와 같은 UI controller에 있는 메소드들 입니다. LiveData안에 무엇이 들어있든지 간에 이것이 바뀌면 UI controller안에 있는 observer들에게 변경사항을 알리게 됩니다.
  • LiveData를 observable하게 만들기 위해 LiveData에 observer를 붙혀야 합니다. 이때, observe() 메소드를 사용합니다.
  • LiveData의 observer 패턴은 ViewModel과 UI Controller간의 커뮤니케이션할 때 사용됩니다.

 

 

댓글



Designed by JB FACTORY