KDispatcher - Eventbus leve e conveniente para o uso diĂĄrio

OlĂĄ queridos colegas, amantes de Kotlin

No meu primeiro artigo, quero falar sobre uma biblioteca Ăștil que escrevi exclusivamente no Kotlin e a apoio e desenvolvo ativamente. É chamado - KDispatcher. Projetado para enviar e assinar notificaçÔes entre seus componentes de cĂłdigo. VocĂȘ pode usĂĄ-lo em qualquer projeto kotlin, seja Android, Frontend, Backend ou KotlinNative.

Principais benefĂ­cios:

  • Assinatura de evento rĂĄpida e fĂĄcil
  • A prioridade de chamadas para funçÔes de ouvinte (retornos de chamada)
  • Usando as funçÔes de extensĂŁo kotlin
  • Segurança da linha

Portanto, para usar esta biblioteca em seu projeto, vocĂȘ precisa conectĂĄ-la atravĂ©s do 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> 

Depois disso, vocĂȘ pode usar duas maneiras:

1) Chame o método de objeto:

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

onde eventName Ă© o nome da string do seu evento que vocĂȘ deseja assinar; :: listenerFunction - uma função que usa um Ășnico parĂąmetro do tipo Notification e pode ter o formato

 (Notification<T>)->Unit 

contendo o objeto dos seus dados (data: T) e o nome do evento (eventName: String). O Ășltimo parĂąmetro opcional, priority: Int Ă© uma variĂĄvel numĂ©rica para classificar a chamada de suas funçÔes de retorno de chamada, pois vocĂȘ pode assinar vĂĄrios ouvintes para um evento de uma vez. Para passar um evento, vocĂȘ precisa chamar o mĂ©todo:

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

VocĂȘ tambĂ©m pode cancelar a inscrição de ouvir eventos quando nĂŁo precisar mais deles, usando o mĂ©todo:

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

Tudo Ă© muito simples.

2) A segunda maneira Ă© implementar suas classes (a palavra certamente nĂŁo Ă© muito boa, mas espero que todos entendam) a partir da interface do IKDispatcher e vocĂȘ pode obter toda a funcionalidade da estrutura de eventos, e ainda mais, devido Ă s funçÔes de extensĂŁo kotlin. Abaixo, quero dar um pequeno exemplo de uso dessa 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}") } } 

VocĂȘ pode encontrar um exemplo completo de uso no link
KDispatcher no github

Obrigado por ler atĂ© o fim. Eu ficaria muito feliz em receber feedback e assistĂȘncia no desenvolvimento do projeto.

Desfrute de codificação na incrível linguagem KOTLIN!

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


All Articles