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