مرحبا زملائي الأعزاء ، عشاق 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 الرائعة!