Rob*_* CK 18 android broadcastreceiver kotlin
如何在Kotlin中使用注册并在Android中创建广播接收器.任何意见....在Java中,你可以通过声明它作为一个广播Receiver.But在科特林创建它没有广播接收功能......嗯,如果它的存在,那么我无法找到它或如何使用它.
v4_*_*adi 53
你可以用以下方式做到这一点
在您的活动类中创建广播接收器对象
val broadCastReceiver = object : BroadcastReceiver() {
override fun onReceive(contxt: Context?, intent: Intent?) {
when (intent?.action) {
BROADCAST_DEFAULT_ALBUM_CHANGED -> handleAlbumChanged()
BROADCAST_CHANGE_TYPE_CHANGED -> handleChangeTypeChanged()
}
}
}
Run Code Online (Sandbox Code Playgroud)
在您的活动的onCreate()函数中注册广播接收器
LocalBroadcastManager.getInstance(this)
.registerReceiver(broadCastReceiver, IntentFilter(BROADCAST_DEFAULT_ALBUM_CHANGED))
Run Code Online (Sandbox Code Playgroud)
在您的活动的ondestroy功能中取消注册它
LocalBroadcastManager.getInstance(this)
.unregisterReceiver(broadCastReceiver)
Run Code Online (Sandbox Code Playgroud)
我创建了一个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)
}
Run Code Online (Sandbox Code Playgroud)
小智 6
Kotlin中的匿名类语法如下:
val receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20419 次 |
| 最近记录: |