Режиссер радиопередач в Котлине

Как использовать регистр и создать широковещательный приемник в 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) }