Hola queridos colegas, amantes de Kotlin.En mi primer artículo quiero contarles sobre una biblioteca útil que escribí exclusivamente en Kotlin, y la apoyo y desarrollo activamente. Se llama - KDispatcher. Diseñado para enviar y suscribirse a notificaciones entre los componentes de su código. Puede usarlo en cualquier proyecto de Kotlin, ya sea Android, Frontend, Backend o KotlinNative.
Beneficios clave
- Suscripción de eventos rápida y fácil
- La prioridad de las llamadas a las funciones de escucha (devoluciones de llamada)
- Usando funciones de extensión de Kotlin
- Hilo de seguridad
Entonces, para usar esta biblioteca en su proyecto, necesita conectarla a través de Gradle:
implementation 'com.rasalexman.kdispatcher:kdispatcher:xyz'
o Maven:
<dependency> <groupId>com.rasalexman.kdispatcher</groupId> <artifactId>kdispatcher</artifactId> <version>xyz</version> <type>pom</type> </dependency>
Después de eso, puede usar dos formas:
1) Llame al método del objeto:
KDispatcher.subscribe(eventName, ::listenerFunction, priority)
donde, eventName es el nombre de la cadena de su evento al que desea suscribirse; :: listenerFunction - una función que toma un solo parámetro de tipo Notificación y puede tener la forma
(Notification<T>)->Unit
que contiene el objeto de sus datos (datos: T) y el nombre del evento (eventName: String). El último parámetro opcional, prioridad: Int es una variable numérica para ordenar la llamada de sus funciones de devolución de llamada, ya que puede firmar varios oyentes para un evento a la vez. Para pasar un evento, debe llamar al método:
KDispatcher.call(eventName:String, data:Any)
También puede darse de baja de escuchar eventos cuando ya no los necesite, utilizando el método:
KDispatcher.unsubscribe(eventName:String, ::listenerFunction)
Todo es muy sencillo.
2) La segunda forma es implementar sus clases (la palabra ciertamente no es muy buena, pero espero que todos lo entiendan) desde la interfaz IKDispatcher y puede obtener toda la funcionalidad del marco de eventos, y aún más, debido a las funciones de extensión de Kotlin. A continuación quiero dar un pequeño ejemplo del uso de esta interfaz:
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}") } }
Puede encontrar un ejemplo completo de uso en el enlace
KDispatcher en githubGracias por leer hasta el final. Estaría muy contento de recibir comentarios y asistencia en el desarrollo del proyecto.
¡Disfruta codificando en el increíble lenguaje KOTLIN!