KDispatcher - Eventbus léger et pratique pour une utilisation quotidienne

Bonjour chers collègues, amoureux de Kotlin

Dans mon premier article, je veux vous parler d'une bibliothèque utile que j'ai écrite exclusivement sur Kotlin, et je la soutiens et la développe activement. Il s'appelle - KDispatcher. Conçu pour l'envoi et l'abonnement aux notifications entre vos composants de code. Vous pouvez l'utiliser dans n'importe quel projet kotlin, que ce soit Android, Frontend, Backend ou KotlinNative.

Avantages clés:

  • Abonnement événementiel simple et rapide
  • La priorité des appels aux fonctions d'écoute (rappels)
  • Utilisation des fonctions d'extension kotlin
  • Sécurité des fils

Donc, pour utiliser cette bibliothèque dans votre projet, vous devez la connecter via Gradle:

implementation 'com.rasalexman.kdispatcher:kdispatcher:xyz' 

ou Maven:

 <dependency> <groupId>com.rasalexman.kdispatcher</groupId> <artifactId>kdispatcher</artifactId> <version>xyz</version> <type>pom</type> </dependency> 

Après cela, vous pouvez utiliser deux méthodes:

1) Appelez la méthode objet:

 KDispatcher.subscribe(eventName, ::listenerFunction, priority) 

où, eventName est le nom de chaîne de votre événement auquel vous souhaitez vous abonner; :: listenerFunction - une fonction qui prend un seul paramètre de type Notification et peut être de la forme

 (Notification<T>)->Unit 

contenant l'objet de vos données (data: T) et le nom de l'événement (eventName: String). Le dernier paramètre optionnel, la priorité: Int est une variable numérique pour trier l'appel de vos fonctions de rappel, puisque vous pouvez signer plusieurs écouteurs à un événement à la fois. Pour passer un événement, vous devez appeler la méthode:

 KDispatcher.call(eventName:String, data:Any) 

Vous pouvez également vous désabonner de l'écoute d'événements lorsque vous n'en avez plus besoin, en utilisant la méthode:

 KDispatcher.unsubscribe(eventName:String, ::listenerFunction) 

Tout est très simple.

2) La deuxième façon consiste à implémenter vos classes (le mot n'est certainement pas très bon, mais j'espère que tout le monde comprendra) à partir de l'interface IKDispatcher et vous pouvez obtenir toutes les fonctionnalités du cadre d'événement, et encore plus, grâce aux fonctions d'extension de kotlin. Ci-dessous, je veux donner un petit exemple d'utilisation de cette interface:

 class MainActivity : AppCompatActivity(), IKDispatcher { private val eventListenerOne = this::eventOneHandler //... override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) scopeOperation() } private fun scopeOperation() { //       subscribe(EVENT_CALL_ONE, 3, eventListenerOne) subscribe(EVENT_CALL_ONE, 1, ::eventListenerTwo) subscribe(EVENT_CALL_ONE, 2, MyClass::eventListenerFour) //   call(EVENT_CALL_ONE, "FIRST CALL FROM KDISPATCHER") /** *      lambda- */ val eventName = "LAMBDA_EVENT" subscribe<String>(eventName) { notification -> println("LAMBDA_EVENT HAS FIRED with event name ${notification.eventName} and data ${notification.data}") unsubscribe(notification.eventName) } call(eventName, "FIRST CALL CUSTOM LABDA EVENT") } fun eventOneHandler(notification:Notification<Any>) { println("eventOneHandler MY TEST IS COMING event = ${notification.eventName} AND data = ${notification.data}") } } 

Vous pouvez trouver un exemple complet d'utilisation sur le lien
KDispatcher sur github

Merci d'avoir lu jusqu'au bout. Je serais très heureux de recevoir des commentaires et de l'aide dans le développement du projet.

Profitez du codage dans le superbe langage KOTLIN!

Source: https://habr.com/ru/post/fr418707/


All Articles