LiveData는 관찰 가능한 데이터 홀더 클래스 입니다. 활동 수명주기 상태에 있는 앱 구성요소 관찰자만 업데이트 하게 됩니다. STARTED, RESUMED 상태 일때 활성 상태이며 이때 업데이트 정보를 알립니다. DESTROYED 로 상태가 변경되면 관찰자를 삭제하여 객체를 관찰할 수 있고 메모리 누수를 방지할 수 있습니다.
class NameViewModel : ViewModel() {
// Create a LiveData with a String
val currentName: MutableLiveData<String> by lazy {
MutableLiveData<String>()
}
// Rest of the ViewModel...
}
class NameActivity : AppCompatActivity() {
// Use the 'by viewModels()' Kotlin property delegate
// from the activity-ktx artifact
private val model: NameViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Other code to setup the activity...
// Create the observer which updates the UI.
val nameObserver = Observer<String> { newName ->
// Update the UI, in this case, a TextView.
nameTextView.text = newName
}
// Observe the LiveData, passing in this activity as the LifecycleOwner and the observer.
model.currentName.observe(this, nameObserver)
}
}
button.setOnClickListener {
val anotherName = "John Doe"
model.currentName.setValue(anotherName)
}