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)
}
如何在 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)
}