기본 구조

스크린샷 2021-11-12 오후 1.37.17.png

서비스에서 액티비티에 데이터 넘기는 방법

원래 BroadCastReceiver를 선언한 다음 Activity에 Receiver를 달아서 사용하는데 안드로이드 공식 홈페이지에서 deprecated 된다고 LiveData를 사용하라고 추천했습니다.

스크린샷 2021-11-12 오후 1.42.30.png

그래서 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를 구독하고 있습니다.