kotlin 中的广播接收器

Broadcast Receiver in kotlin

如何在 Kotlin Android 中使用注册和创建广播接收器。任何建议... 在 Java 中,您可以通过将其声明为广播接收器来创建它。但是在 Kotlin 中我无法找到 Broadcast Receiver ...如果它在那里那么如何使用它。

Kotlin 中的匿名 class 语法是这样的:

val receiver = object : BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent) {

    }
}

您可以通过以下方式进行

在您的 activity class

中创建一个广播接收器对象
val broadCastReceiver = object : BroadcastReceiver() {
    override fun onReceive(contxt: Context?, intent: Intent?) {   
        when (intent?.action) {
           BROADCAST_DEFAULT_ALBUM_CHANGED -> handleAlbumChanged()
           BROADCAST_CHANGE_TYPE_CHANGED -> handleChangeTypeChanged()
        }
    }
}

在 activity

的 onCreate() 函数中注册广播接收器
 LocalBroadcastManager.getInstance(this)
                    .registerReceiver(broadCastReceiver, IntentFilter(BROADCAST_DEFAULT_ALBUM_CHANGED))

在 activity

的 ondestroy 函数中取消注册
LocalBroadcastManager.getInstance(this)
                .unregisterReceiver(broadCastReceiver)

我创建了一个 BroadcastReceiver Kotlin extension,您可以在任何地方 copy/paste。 它并没有比已经提到的更多,但它减少了一些样板文件。

使用这个扩展,你应该register/unregister像这样:

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)
}