在kotlin广播Reciver
如何在Kotlin中使用注册并在Android中创建Broadcast Receiver。 任何建议….在Java中,您可以通过声明它为广播接收器来创建它。但是在Kotlin中没有广播接收器function…以及如果有,那么我无法find它或如何使用它。
你可以用下面的方法来做
在您的活动类中创建一个广播接收器对象
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))
注销它在你的活动的ondestroyfunction
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) }