Поток Котлина в разных классах

#android #kotlin #phone-state-listener #kotlin-flow

Вопрос:

У меня есть служба прослушивания вызовов с MutableStateFlow

 class CallsLogListenerService : PhoneStateListener() {

    private val _events = MutableStateFlow<String>("INITIAL")
    val events = _events.asStateFlow()

    override fun onCallStateChanged(state: Int, phoneNumber: String?) {
        super.onCallStateChanged(state, phoneNumber)
        when (state) {
            TelephonyManager.CALL_STATE_IDLE -> {
                postEvent("IDLE")
                Log.d("CALL STATE", "Idle call")
            }
            TelephonyManager.CALL_STATE_OFFHOOK -> {
                Log.d("CALL STATE", "Off hook call")
            }
            TelephonyManager.CALL_STATE_RINGING -> {
                postEvent("RINGING")
                Log.d("CALL STATE", "Ringing call")
            }
        }
    }

    fun postEvent(event: String) {
        CoroutineScope(Dispatchers.Main).launch {
            _events.emit(event)
        }
    }
 

И у меня есть репозиторий с этой службой

 class CallsRepositoryImpl(private val listenerService: CallsLogListenerService) {

    init {
        listenCallState()
    }

    private fun listenCallState() {
        CoroutineScope(Dispatchers.Main).launch {
            listenerService.events.collect { Log.d("CALL STATE IN REPO", it) }
        }
    }
}
 

Проблема: В журнале я вижу только «НАЧАЛЬНОЕ» состояние в репозитории и ничего другого. Но в классе обслуживания все в порядке.

Все состояния показывают, собираю ли я события CallsLogListenerService (только для тестирования).

Вопрос: Что я делаю не так stateFlow ?