1. 정의
라이브 데이터는 안드로이드 앱에서 사용되는 데이터 홀더 클래스이다.
데이터를 관찰하고 데이터가 변경될 때 관찰자에게 알리는 데 주로 사용된다.
옵저버 패턴을 구현하며, 데이터 소스가 변경될 때마다 관찰자(뷰나 프래그먼트)에게 변경 사항을 알려준다.
라이브 데이터는 일반적으로 ViewModel 클래스와 함께 사용된다.
ViewModel은 UI와 관련된 데이터를 처리하고 보고나하며, 라이브 데이터를 사용하여 이러한 데이터를 관찰할 수 있다.
이를 통해 UI 컴포턴트와 비즈니스 로직을 분리하고, 유지보수성과 확장성을 향상시킬 수 있다.
2. 사용 예시
2-1. 상황
ViewModel에서 라이브 데이터를 사용하여 데이터를 관찰하고, UI 컴포넌트에서 라이브 데이터를 구독하여 데이터가 변경될 때마다 업데이트하는 상황이다.
2-2. 코드
[MyViewModel]
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
class MyViewModel : ViewModel() {
private val _myData = MutableLiveData<String>()
val myData: LiveData<String> = _myData
fun loadData() {
// 데이터를 가져오는 비동기 작업 수행
val newData = "New Data"
_myData.value = newData // LiveData 값을 업데이트
}
}
[MainActivity]
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.activity.viewModels
import androidx.lifecycle.Observer
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
private val myViewModel: MyViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
myViewModel.myData.observe(this, Observer { data ->
// LiveData 값이 변경될 때마다 호출되는 콜백 함수
textView.text = data // UI 업데이트
})
loadDataButton.setOnClickListener {
myViewModel.loadData() // ViewModel 함수 호출
}
}
}
loadDataButton을 누르면 콜백 함수가 호출 되면서 데이터가 갱신되고, 갱신된 데이터가 textView에 작성된다.
'Kotlin > 개념 정리' 카테고리의 다른 글
개념 정리: Retrofit2 사용 법 (0) | 2023.03.08 |
---|---|
개념 정리 : 뷰 모델 (0) | 2023.02.17 |
개념 정리 : 데이터 바인딩 (0) | 2023.02.17 |
개념 정리 : 뷰 바인딩 (0) | 2023.02.17 |
개념 정리 : 코루틴 (0) | 2023.02.17 |