Широковещательный приемник в Котлине
Как использовать регистрация и создать широковещательный приемник в Android в Котлине. любой Совет.... В Java, вы можете создать его, объявив его как широковещательный приемник.Но в Котлине нет функции широковещательного приемника...ну, если он есть, тогда я не могу его найти или как его использовать.
3 ответов
вы можете сделать это следующим образом
создайте объект широковещательного приемника в своем классе активности
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)
Я создал BroadcastReceiver расширение Котлин, который вы можете копировать/вставить в любом месте. Он не делает намного больше, чем уже упоминалось, но он уменьшает часть шаблона.
используя это расширение, вы должны зарегистрироваться / отменить регистрацию следующим образом:
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)
}
синтаксис анонимного класса в Kotlin выглядит так:
val receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
}
}