Широковещательный приемник в Котлине

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

    }
}