Comment utiliser s'inscrire et créer un récepteur de diffusion dans Android dans Kotlin. Tout conseil .... En Java, vous pouvez le créer en le déclarant comme un récepteur de diffusion.Mais à Kotlin il n'y a pas Fonction de récepteur de diffusion ... eh bien si elle est là, je ne peux pas la trouver ni comment l'utiliser.
vous pouvez le faire de la manière suivante
Créez un objet récepteur de diffusion dans votre classe d'activité
val broadCastReceiver = object : BroadcastReceiver() {
override fun onReceive(contxt: Context?, intent: Intent?) {
when (intent?.action) {
BROADCAST_DEFAULT_ALBUM_CHANGED -> handleAlbumChanged()
BROADCAST_CHANGE_TYPE_CHANGED -> handleChangeTypeChanged()
}
}
}
Enregistrer le récepteur de diffusion dans la fonction onCreate () de votre activité
LocalBroadcastManager.getInstance(this)
.registerReceiver(broadCastReceiver, IntentFilter(BROADCAST_DEFAULT_ALBUM_CHANGED))
le désinscrire en fonction ondestroy de votre activité
LocalBroadcastManager.getInstance(this)
.unregisterReceiver(broadCastReceiver)
La syntaxe de classe anonyme dans Kotlin est la suivante:
val receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
}
}
J'ai créé une extension BroadcastReceiver Kotlin , que vous pouvez copier/coller n'importe où. Il ne fait pas beaucoup plus que ce qui est déjà mentionné, mais il réduit une partie du passe-partout. ????
En utilisant cette extension, vous devez vous inscrire/désinscrire comme ceci:
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)
}