ماهي RXJava ولماذا هي مهمة في تطوير تطبيقات الاندرويد وكيف تتعلمها ؟
في هذا الدرس سوف نقوم بعمل لكم مقدمة حول RXJava بالاندرويد ستوديو حيث انها تعد من اكثر التقنيات الحديثة التي تحل مشكلة Thread التي يعاني منها اصحاب التطبيقات التي تحظى بعدد مستخدمين كبير وهي تقنية مهمة وحديثة ومن المفترض عليك تعلمها لكي تكون مبرمج ناجح , ولكن قد لا تستخدمها في التطبيقات الصغيرة , وبسبب كبرها واهميتها سوف يتم شرحها في اكثر من مقالة لكي لا تدخل المعلومات في بعضها وتتلخبط حيث في هذة المقالة سوف نتعرف على اهم مكونات الار اكس جافا للandroid studio .
مجال تطوير تطبيقات الاندرويد او تطوير تطبيقات الموبايل عموما هو اكثر مجال نهتم به في موقعنا ونقدم له شروحات كثيرة جدا وذلك لاهميتة وايضا لانه قد يصبح مصدر دخل بالنسبة لك وقد تبحث عن شركة تطوير تطبيقات الجوال والعمل بها اذا كنت جيد في عملية تطوير تطبيقات الهواتف الذكية او العمل في مواقع الفري لانسر ومجال تطوير تطبيقات الاندرويد كبير وواسع ويجب عليك دائما التطور فيها ولا تثبت عند مستواك الحالي فهنالك دائما تحديثات واضافات جديدة تظهر باستمرار وليس تطوير تطبيقات الاندرويد بل اي مجال له علاقة بالكمبيوتر او البرمجة .
كثير منا يسعى الى تعلم البرمجة وخصوصا تطوير تطبيقات الاندرويد او تطوير المواقع سواء باستخدام الجافا سكريبت او HTML او Php او غيرة فهذين المجالين اكثر المجالات عليها طلب تعلم لاهميتهم وايضا لانك تستطيع تعلمهم بشكل اونلاين ونحن نقدم في موقعنا دورة جافا بسيطة جدا للبدء في هذا المجال وفي الايام المقبلة سوف نحاول ان نقدم شروحات ودروس في برمجة مواقع الويب لانه ايضا مجال مهم جدا ومتوفر له عديد من الدروس على الانترنت بالعربي عكس مجال تطوير تطبيقات الموبايل حيث لا يقتصر جي كودرس على تطوير تطبيقات الهواتف الذكية بل موقعنا يشمل تعلم البرمجة .
ما الغرض والهدف من انشاء rxjava ؟
دعونا نعطي مثال بسيط وهو نفس مثال اخونا علي الحملاوي لدينا شخص يريد الصعود لمصعد ووجد انه هناك ثلاث مصاعد في طبيعة الحال يذهب لاي مصعد منهم يجد ان الاول على سبيل المثال امامه دورين والثاني 5 والاخير 8 سوف يرجع للمصعد الاول مره اخرى ويقوم بطلبه لانه اقرب , ماذا نستفيد من هناك ؟ ان الشخص قد استعمل خلايا عقله لحساب ال3 مصاعد ليعرف من الاقل وايضا تاخر فما الحل ؟ قامت شركة المصاعد بعمل نظام وهو عندما ينقر على اي زر سوف يهبط له اقرب مصعد بدون اي يبحث عن ايهم اقرب , وهذة نفس الفكرة التي قامت بها الجافا .
مما تتكون rxjava ؟
اولا تتكون من ثلاث عناصر رئيسية وهيا observables و observers و اخيرا operators والان دعونا نتعرف على كل واحد بشكل اعمق قليلا .
observables :
هي المعلومه التي تصل من السيرفر للمستخدم على سبيل المثال
observers :
هي الاداة التي تنظر الى observables وتقوم بعمل operators اللازم لكي يوفر وقت للمستخدم
operators :
هي العمليات التي تحدث عندما يكون في observers في انتظار وصول المعلومه او العمليات التي تحدث بين observers و observables , ويستخدم ك filter في كثير من الاحيان .
ماهي انواع Observables ؟
تهتم Observables ب4 انواع وهي maybe و single و comletable و Observables والان دعونا نتعرف عليها بهدوء .
1-maybe
مهتم هل يوجد معلومه ام لا اذا كانت هناك معلومه تكون الاشاره 1 واذا لم تكن تكون 0 وليس مهم هنا ان تكون مفهمومه .
2- single
مهتم بمعلومه واحده ومهتم هل وصلت ام لا
3- comletable
ليس مهتم بنوع المعلومه المعلومه ولكنه يهتم هل وصلت كامله ولا لا
4-Observables
مهتم بالمعلومه بشكل كامل هل وصلت بشكل جيد ام لا ومتى بداءت بمعنى اخر مهتم بكل شيئ حول المعلومه . وهذا النوع به مشكلة وسوف تسمى Backpressure .
متى يحدث وماهي انواعه ؟
ببساطة تحدث مشكلة Backpressure عندما يكون Observables اسرع من Observers ( تسرع المعلومه بشكل اسرع قبل ان تراقب بشكل جيد ) وهنا تحدث ماا احدى المشاكل التالية :-
1- On Backpressure Drop .
يقوم بحذف المعلومات عندما يكون شغال ( بمعنى لو كان يعمل في معالجة اول معلومه وتمت اضافة له معلومه جديدة يقوم بحذفها ولا يعمل عليها )
2- On Backpressure latest .
يعمل على اخر معلومه فقط ( بمعنى عندما يكون في معالجة معلومه ودخلت له غيرها يتركها ويعمل على الاخيرة )
3- On Backpressure Buffer .
يقوم بحفظ البيانات الى ان ينتهي ومكان الحفظ اسمه buffer واذا قمت بحفظ 2 سيحفظ كل 2 واذا اعطيته 3 سيحفظ كل 3 وهكذا , وعندما يريد ان يعالج البيانات يحضرها من البافر وليس من السيرفر .
سؤال اذا حدث زيادة في البيانات وكانت 4 وانت محدد ان البافر يكون 3 ماذا يحدث ؟
يحدث واحد من ثلاث
1- ايرور
2- يقوم بعمل بحذف اي معلومه تاتي جديدة
3- يقوم بحذف اقدم معلومه في الbuffer ويدخل الجديده .
قم بإضافة المكتبة التالية وهي مخصصه لعمل rx java في الاندرويد ستوديو ومن الدرس القادم سوف نبدء في الشرح بالكود .
dependencies {
// Build rx java for android studio
implementation 'io.reactivex.rxjava3:rxjava:3.0.0'
implementation 'io.reactivex.rxjava3:rxandroid:3.0.0'
}
الى هنا نكون وضحنا لكم الهدف والفكرة من استخدام RxJava ولا نريد ان نطيل عليكم اكثر من هذا لكي لا تدخل المعلومات في بعضها ولهذا سوف نحاول تقسيم الشرح لاكثر من جزء لذلك حاول قراءة هذا الجزء جيدا لانه مرتب عليه القادم , ولمزيد من المقالات حول هذة القضية يمكنك مشاهدة التالية :-