Broadcast Reciver en kotlin

Cómo utilizar el logging y crear un receptor de difusión en Android en Kotlin. Cualquier consejo … En Java, puedes crearlo declarándolo como Receptor de Transmisión. Pero en Kotlin no hay function de Receptor de Transmisión … bueno, si está allí, entonces no puedo encontrarlo ni cómo usarlo. eso.

puedes hacerlo de la siguiente manera

Crea un object receptor de difusión en tu class de actividad

val broadCastReceiver = object : BroadcastReceiver() { override fun onReceive(contxt: Context?, intent: Intent?) { when (intent?.action) { BROADCAST_DEFAULT_ALBUM_CHANGED -> handleAlbumChanged() BROADCAST_CHANGE_TYPE_CHANGED -> handleChangeTypeChanged() } } } 

Registre el receptor de difusión en la function onCreate () de su actividad

  LocalBroadcastManager.getInstance(this) .registerReceiver(broadCastReceiver, IntentFilter(BROADCAST_DEFAULT_ALBUM_CHANGED)) 

anular el logging en la function ondestroy de su actividad

 LocalBroadcastManager.getInstance(this) .unregisterReceiver(broadCastReceiver) 

La syntax de class anónima en Kotlin es así:

 val receiver = object : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { } } 

Creé una extensión de BroadcastReceiver Kotlin , que puedes copyr / pegar en cualquier lugar. No hace mucho más de lo que ya se mencionó, pero networkinguce parte de la repetición. 😀

Usando esta extensión, debes registrar / anular el logging así:

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