Как использовать регистр и создать широковещательный приемник в Android в Котлине. Любые советы …. На Java вы можете создать его, объявив его в качестве широковещательного приемника. Но в Котлине нет функции вещательного приемника … ну, если она есть, тогда я не могу ее найти или как использовать Это.
вы можете сделать это следующим образом
Создайте объект вещательного приемника в своем классе активности
val broadCastReceiver = object : BroadcastReceiver() { override fun onReceive(contxt: Context?, intent: Intent?) { when (intent?.action) { BROADCAST_DEFAULT_ALBUM_CHANGED -> handleAlbumChanged() BROADCAST_CHANGE_TYPE_CHANGED -> handleChangeTypeChanged() } } }
Зарегистрировать широковещательный приемник в функции onCreate () вашей деятельности
LocalBroadcastManager.getInstance(this) .registerReceiver(broadCastReceiver, IntentFilter(BROADCAST_DEFAULT_ALBUM_CHANGED))
отменить его в ondestroy функции вашей деятельности
LocalBroadcastManager.getInstance(this) .unregisterReceiver(broadCastReceiver)
Анонимный синтаксис класса в Kotlin выглядит так:
val receiver = object : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { } }
Я создал расширение BroadcastReceiver Kotlin , которое вы можете копировать / вставлять в любом месте. Это не намного больше, чем то, что уже упоминалось, но оно уменьшает часть шаблона. 😀
Используя это расширение, вы должны зарегистрироваться / отменить регистрацию следующим образом:
private lateinit var myReceiver: BroadcastReceiver override fun onStart() { super.onStart() myReceiver = registerReceiver(IntentFilter(BROADCAST_SOMETHING_HAPPENED)) { intent -> when (intent?.action) { BROADCAST_SOMETHING_HAPPENED -> handleSomethingHappened() } } } override fun onStop() { super.onStop() unregisterReceiver(myReceiver) }