KDispatcher - Eventbus خفيفة الوزن ومريحة للاستخدام اليومي

مرحبا زملائي الأعزاء ، عشاق Kotlin

في مقالتي الأولى ، أريد أن أخبركم عن مكتبة مفيدة كتبتها حصريًا على Kotlin ، وأنا أدعمها بنشاط وأطورها. يطلق عليه - KDispatcher. مصمم لإرسال رسائل بريدية والاشتراك في الإشعارات بين مكونات التعليمات البرمجية. يمكنك استخدامه في أي مشروع kotlin ، سواء كان Android أو Frontend أو Backend أو KotlinNative.

الفوائد الرئيسية:

  • اشتراك حدث سريع وسهل
  • أولوية الاستدعاءات لوظائف المستمع (الاسترجاعات)
  • استخدام وظائف امتداد kotlin
  • سلامة الخيط

لذلك ، لاستخدام هذه المكتبة في مشروعك ، تحتاج إلى توصيلها من خلال Gradle:

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

أو مخضرم:

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

بعد ذلك ، يمكنك استخدام طريقتين:

1) استدعاء طريقة الكائن:

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

حيث ، eventName هو اسم سلسلة الحدث الخاص بك الذي تريد الاشتراك فيه ؛ :: listenerFunction - وظيفة تأخذ معلمة واحدة من نوع الإخطار ويمكن أن تكون من النموذج

 (Notification<T>)->Unit 

تحتوي على كائن بياناتك (البيانات: T) واسم الحدث (eventName: String). المعلمة الاختيارية الأخيرة ، الأولوية: Int هو متغير رقمي لفرز استدعاء وظائف رد الاتصال ، حيث يمكنك تسجيل العديد من المستمعين لحدث واحد في وقت واحد. لتمرير حدث تحتاج إلى استدعاء الطريقة:

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

يمكنك أيضًا إلغاء الاشتراك من الاستماع إلى الأحداث عندما لا تكون بحاجة إليها ، باستخدام الطريقة:

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

كل شيء بسيط للغاية.

2) الطريقة الثانية هي تنفيذ فصولك الدراسية (الكلمة بالتأكيد ليست جيدة جدًا ، ولكن آمل أن يفهم الجميع) من واجهة IKDispatcher ويمكنك الحصول على جميع وظائف إطار الحدث ، وأكثر من ذلك ، بسبب وظائف امتداد kotlin. أدناه أريد أن أعطي مثالا صغيرا على استخدام هذه الواجهة:

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

يمكنك العثور على مثال كامل للاستخدام على الرابط
KDispatcher على جيثب

شكرا للقراءة حتى النهاية. سأكون سعيدًا جدًا لتلقي التعليقات والمساعدة في تطوير المشروع.

استمتع بالترميز بلغة KOTLIN الرائعة!

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


All Articles