[kotlin] MVVM 아키텍처에서의 알림(Notification) 처리 방법
목차
1. LiveData를 사용한 알림 처리
MVVM 아키텍처에서는 주로 LiveData를 사용하여 데이터의 변화를 감지하고 관찰합니다. 이를 활용하여 알림 처리를 할 수 있습니다. ViewModel에서 LiveData를 노출하고, View에서는 해당 LiveData를 관찰하여 알림을 처리하는 방식이 일반적입니다.
class MyViewModel : ViewModel() {
private val _notification = MutableLiveData<String>()
val notification: LiveData<String> = _notification
fun handleNotification() {
// 알림을 받았을 때 _notification에 값을 설정
_notification.value = "New notification message"
}
}
class MyFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
viewModel.notification.observe(viewLifecycleOwner, Observer { message ->
// 알림을 처리하는 UI 로직
showToast(message)
})
}
}
2. RxJava를 이용한 알림 처리
또 다른 방법으로 RxJava를 이용하여 알림을 처리할 수 있습니다. ViewModel에서는 Observable 또는 Subject를 사용하여 알림을 발행하고, View에서는 해당 Observable을 구독하여 알림을 처리합니다.
class MyViewModel {
private val notificationPublisher = PublishSubject.create<String>()
fun handleNotification() {
// 알림을 받았을 때 notificationPublisher를 통해 알림 발행
notificationPublisher.onNext("New notification message")
}
}
class MyFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
viewModel.notificationPublisher.subscribe { message ->
// 알림을 처리하는 UI 로직
showToast(message)
}
}
}
3. 알림 처리의 주의할 점
- 메모리 누수(Memory Leak): LiveData나 RxJava Observable을 사용할 때 메모리 누수에 주의해야 합니다.
- UI 업데이트: 알림을 받아 UI를 업데이트할 때, View의 생명주기(owner)를 잘 관리해야 합니다.
4. 결론
MVVM 아키텍처에서 알림 처리는 주로 LiveData나 RxJava를 이용하여 구현됩니다. 각 방법마다 장단점이 있으므로 상황에 맞게 적절한 방법을 선택해야 합니다.
참고 문헌: