기본 구조
원래 BroadCastReceiver를 선언한 다음 Activity에 Receiver를 달아서 사용하는데 안드로이드 공식 홈페이지에서 deprecated 된다고 LiveData를 사용하라고 추천했습니다.
그래서 Repository 클래스를 만들어 거기에 LiveData를 선언하기로 결정했습니다.
아래는 변경된 구조에 대한 설명입니다.
🐟 ChimeRepository
enum class ChimeResponse {
Early, PeopleIn, PeopleOut, Volume, VideoTile
}
class ChimeRepository {
//ChimeForegroundService.class 에서 전달 해준 결과
val serviceResponse = MutableLiveData<ChimeResponse>()
➡️ enum class로 동작들을 지정해줬습니다.
순서대로 수업시간 아님, 통화에 사람 들어옴, 통화에서 사람 나감, 소리 크기 변경, 영상에서 사람 들어옴
🐟 ChimeActivity
chimeRepository.serviceResponse.observe(this,{
Timber.d("it = $it")
setServiceState(it)
})
➡️ Activity는 serviceResponse를 구독하고 있습니다.