Кто-нибудь знает, почему я не могу прослушать любой 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, но я все еще не вижу, что не так с кодом ниже в фиктивном проекте.