在kotlin广播Reciver
如何在Kotlin中使用注册并在Android中创建Broadcast Receiver。 任何建议….在Java中,您可以通过声明它为广播接收器来创建它。但是在Kotlin中没有广播接收器功能…以及如果有,那么我无法找到它或如何使用它。
你可以用下面的方法来做
在您的活动类中创建一个广播接收器对象
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)
Kotlin中的匿名类语法如下所示:
val receiver = object : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { } }
我创建了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) }
- 溢出菜单单击禁用Immersive模式 – Android 4.4 Kitkat
- kotlin android中的setOnLongClickListener
- Android:Kotlin TypeCastException:null不能转换为非nulltypes的kotlin.String
- 使用kotlin时,在单元测试和仪器测试之间共享代码
- RuntimeException处理最佳实践
- 错误:以下类的超类型无法解析。 请确保您在类路径中具有所需的依赖关系
- Android:只有创建视图层次结构的原始线程可以在调用invalidate()时触及其视图。
- 如何使用Realm的方法与Kotlin
- 无法解决:com.android.support