Использование BroadcastReceiver внутри AndroidViewModel - PullRequest
0 голосов
/ 28 февраля 2019

Кто-нибудь знает, почему я не могу прослушать любой BroadcastReceiver в контексте ViewModel?Если я выполняю один и тот же код внутри Activity, Fragment или самого приложения, это работает.Однако, делая это из ViewModel, используя тот же экземпляр приложения, он не работает.

Вот основной код:

class MyViewModel(application: Application) : AndroidViewModel(application) {
    init {
        registerBroadcastReceivers(application)
    }

    /**
     * Register for required broadcast receivers.
     */
    private fun registerBroadcastReceivers(application: Application) {
        application
            .registerReceiver(
                mLocationProviderChangedReceiver,
                IntentFilter(LocationManager.MODE_CHANGED_ACTION)
            )
    }

    /**
     * Broadcast receiver to monitor the changes in the location provider.
     */
    private val mLocationProviderChangedReceiver = object : BroadcastReceiver() {
        override fun onReceive(context: Context, intent: Intent) {
            Log.d("", "Received!") // <-- Never triggered when switching location
        }
    }
}

Я нашел пример , который прекрасно работает на Java с использованием того же BroadcastReceiver в AndroidViewmodel, но я все еще не вижу, что не так с кодом ниже в фиктивном проекте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...