Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android SDK
Code

البدء مع RxJava 2 الروبوت

by
Difficulty:BeginnerLength:LongLanguages:

Arabic (العربية/عربي) translation by Muhammad Hakim Almadani (you can also view the original English article)

إذا كنت مطور الروبوت، ثم كنت قد سمعت أشياء جيدة عن ركسجافا، إلى تنفيذ المصدر المفتوح شعبية للمكتبة ريكتيفيكس أن يجلب البرمجة التفاعلية لالة جافا الافتراضية (JVM).

ركسجافا يهدف إلى اتخاذ الأم الخروج من العمل مع تيارات غير متزامنة من البيانات — على الرغم من أن كما سترى، ركسجافا في تعريف "البيانات" واسع جداً. لأن ركسجافا مكتبة متوافقة مع JVM، يمكنك استخدامها على مجموعة واسعة من المنصات، ولكن في هذه السلسلة سوف تظهر لك كيفية استخدام 2 ركسجافا لتطوير الروبوت.

في نهاية هذه السلسلة عليك أن تتقن جميع أساسيات 2 ركسجافا حتى يمكن البدء في إنشاء تطبيقات عالية التفاعل التي يمكن معالجة طائفة واسعة من البيانات المتزامن وغير المتزامن – جميعا باستخدام التعليمات البرمجية التي أكثر إيجازاً ويمكن التحكم فيها من عادة سيكون قادراً على تحقيق مع جاوة وحدها.

وبالإضافة إلى توفير مقدمة للقادمين الجدد ركسجافا، إذا كنت المخضرم 1 ركسجافا الذي يتطلع إلى تحقيق القفزة إلى ركسجافا 2، ثم هذه السلسلة سيساعد على جعل هذا الانتقال سلسة قدر الإمكان. أثناء الترقية إلى إصدار أحدث من مكتبة قد لا يبدو مثل صفقة كبيرة، 2 ركسجافا ليس التحديث النموذجي الخاص بك — إعادة كتابة كاملة من ركسجافا. مع تغير الكثير من السهل الحصول على الخلط، حيث أخذ بعض الوقت للتعرف على نفسك مع 2 ركسجافا من منظور مبتدئاً يمكن أن يوفر لك الكثير من الوقت والإحباط في الأجل الطويل.

في هذا المنصب الأول، سوف تكون تغطي ما ركسجافا والفوائد الرئيسية ويوفر المطورين الروبوت. سوف نتخذ أيضا نظرة متعمقة في العناصر الأساسية لأي مشروع ركسجافا: Observers و Observables والاشتراكات. بنهاية هذا البرنامج التعليمي، سوف يكون إنشاء بسيطة "مرحبا عالم"-أسلوب التطبيق الذي يحتوي على كافة هذه المكونات الأساسية.

هي لبنات البناء الرئيسية الأخرى من ركسجافا المشغلين، وحتى في الجزء الثاني أنا سوف يتم استكشاف طرق مختلفة يمكنك استخدام عوامل التشغيل لتحويل، والجمع بين، تصفية ومعالجة البيانات للتطبيق الخاص بك.

في الدفعة الأخيرة، سنقوم بالانتقال من المكتبة ركسجافا الأساسية ونلقي نظرة على ركساندرويد، مكتبة بأكملها التي هي معبأة مع كافة الملحقات الخاصة بالروبوت سوف تحتاج إلى إطلاق العنان للكامل إمكانات البرمجة التفاعلية للروبوت.

لدينا الكثير لتغطية، لذلك دعونا نبدأ مع الأساسيات:

ما هو ركسجافا، على أية حال؟

ركسجافا هي مكتبة التي تمكنك من إنشاء تطبيقات في نمط البرمجة التفاعلية. في جوهرها، تتيح البرمجة التفاعلية وسيلة نظيفة وفعالة للمعالجة ورد فعل لتيارات البيانات في الوقت الحقيقي، بما في ذلك البيانات مع قيم ديناميكية.

هذه البيانات والجداول لا يتعين بالضرورة أن تأخذ الشكل أنواع البيانات التقليدية، كما يعامل ركسجافا إلى حد كبير كل شيء كدفق بيانات — كل شيء من المتغيرات لخصائص ومخابئ، وحتى أحداث الإدخال المستخدم مثل نقرات والضربات الشديدة.

يمكن أن تكون البيانات المنبعثة من كل تيار أما قيمة أو خطأ أو إشارة "مكتمل"، وعلى الرغم من أن لم يكن لديك بالضرورة لتنفيذ آخر اثنين. بمجرد إنشاء تيارات لبث البيانات الخاصة بك، يمكنك الجمع بينها وبين الأجسام المتفاعلة التي تستهلك وثم التصرف في هذه البيانات، القيام بإجراءات مختلفة اعتماداً على ما قد تنبعث الدفق. RxJava يتضمن مجموعة كاملة من عوامل مفيدة للعمل مع الجداول، مما يجعل من السهل للقيام بأشياء مثل تصفية ورسم الخرائط، وتأخير، والعد، وأكثر بكثير.

An Observable and an operation

لإنشاء سير العمل هذا لدفق البيانات والكائنات التي تتفاعل معها ، يمتد RxJava نمط تصميم برنامج Observer. أساسا ، في RxJava لديك الكائنات التي يمكن رصدها التي تنبعث منها دفق البيانات ثم إنهاء ، وكائنات Observer التي تشترك في Observables. يتلقى Observer إشعارًا في كل مرة يرسل فيها Observable المعين له قيمة ، أو خطأ ، أو إشارة مكتملة.

حتى على مستوى عال جداً، ركسجافا كل شيء:

  • إنشاء Observable.
  • مما يمكن Observable أن بعض البيانات الإرسال.
  • إنشاء Observer.
  • تعيين Observer إلى Observable.
  • وتولى مهام Observer القيام كلما كان يتلقى انبعاثات منObservable المعينة لها.

لماذا RxJava؟

تعلم أي تكنولوجيا جديدة يتطلب وقتاً وجهدا، وركسجافا كمكتبة المنحى البيانات، ليست دائماً API أسهل الحصول على السيطرة على.

لمساعدتك في تحديد ما إذا كان التعلم ركسجافا يستحق الاستثمار الأولى، دعنا نستكشف بعض الفوائد الرئيسية لإضافة مكتبة ركسجافا لمشاريع الروبوت الخاص بك.

رمز أكثر إيجازاً، للقراءة

التعليمات البرمجية التي معقدة ومطولة وصعوبة في القراءة هو دائماً الأخبار السيئة. رمز فوضوي أكثر عرضه للأخطاء وأوجه القصور الأخرى، وفي حالة حدوث أي أخطاء ثم كنت وقت أكثر مشقة في تعقب مصدر هذه الأخطاء إذا التعليمات البرمجية الخاصة بك في حالة من فوضى.

حتى إذا كان بناء المشروع الخاص بك دون أية أخطاء، التعليمات البرمجية المعقدة لا يزال يمكن أن يعود إلى تطارد لكم — عادة عندما تقرر الإفراج عن تحديث للتطبيق الخاص بك بضعة أشهر أسفل الخط، الحذاء المشروع الخاص بك، ونواجه فورا بجدار من متشابكة ، الخلط بين التعليمات البرمجية!

تبسط RxJava الشفرة المطلوبة للتعامل مع البيانات والأحداث عن طريق السماح لك بوصف ما تريد تحقيقه ، بدلاً من كتابة قائمة من التعليمات لتطبيقك للعمل من خلالها. يوفر RxJava أيضًا سير عملًا قياسيًا يمكنك استخدامه للتعامل مع جميع البيانات والأحداث عبر التطبيق - قم بإنشاء Observable ، أنشئ Observer، عيّن الملاحظة التي يمكن ملاحظتها إلى ذلك المراقب ، وشطفها وتكرارها. يجعل هذا النهج رسمي للتعليمات البرمجية واضحة جداً، ويمكن قراءته بواسطة الإنسان.

تعدد العمليات بسهولة

تطبيقات الروبوت الحديث بحاجة إلى أن تكون قادرة على إنجاز العديد من المهام. على الأقل، سوف يتوقع المستخدمون أن تكون قادرة على مواصلة التفاعل مع واجهة المستخدم للتطبيق الخاص بك أثناء تنفيذ التطبيق الخاص بك بعض العمل في الخلفية، مثل إدارة اتصال شبكة اتصال أو تحميل ملف الموسيقى. المشكلة أن الروبوت مؤشر ترابط واحد بشكل افتراضي، حتى إذا كان التطبيق الخاص بك من أي وقت مضى أن متعددة المهام بنجاح ثم سوف تحتاج إلى إنشاء بعض المواضيع الإضافية.

من خارج منطقة الجزاء، الروبوت يوفر عددا من الطرق لإنشاء مؤشرات ترابط إضافية، مثل الخدمات و IntentServices، ولكن أيا من هذه الحلول سهلة خاصة لتنفيذ، وأنها يمكن أن ينتج بسرعة التعليمات البرمجية المعقدة، والمطول الذي عرضه للأخطاء.

ركسجافا يهدف إلى اتخاذ الأم الخروج من إنشاء تطبيقات الروبوت متعددة مؤشرات الترابط، بتوفير المنظمون الخاصة والمشغلين. تعطيك هذه طريقة سهلة لتحديد مؤشر الترابط حيث يجب أن يتم تنفيذ العمل والخيط حيث ينبغي أن يتم نشر نتائج هذا العمل. ركسجافا 2.0 يتضمن عددا من المنظمون بشكل افتراضي، بما في ذلك Schedulers.newThread، ومفيدة بشكل خاص كما أنه يقوم بإنشاء مؤشر ترابط جديد.

لتغيير مؤشر ترابط حيث يتم تنفيذ العمل، تحتاج فقط تغيير حيث تؤيد مراقب إلى مراقب، استخدام عامل التشغيل subscribeOn. على سبيل المثال، هنا نحن تقوم بإنشاء جديد الموضوع وتحديد أنه يجب إنجازه العمل على هذا الموضوع الجديد:

آخر مشكلة طال أمدها مع تعدد العمليات على الروبوت هو أنه يمكنك فقط تحديث واجهة المستخدم للتطبيق الخاص بك من مؤشر الترابط الرئيسي. بشكل عام، كلما كنت في حاجة إلى نشر نتائج بعض الأعمال الأساسية لواجهة المستخدم للتطبيق الخاص بك، لديك لإنشاء معالج Handler.

مرة أخرى، قد ركسجافا إلى حل أكثر وضوحاً. يمكنك استخدام عامل التشغيل observeOn لتحديد أن ملاحظ أن ترسل إخطارات استخدام جدولة مختلفة، مما يسمح لك بإرسال البيانات الخاصة بك يمكن ملاحظتها في الموضوع من اختيارك، بما في ذلك مؤشر ترابط UI الرئيسي أساسا.

وهذا يعني أن مع اثنين فقط الأسطر من التعليمات البرمجية، يمكنك إنشاء مؤشر ترابط جديد وإرسال النتائج للعمل المنجز في هذا الموضوع للروبوت في مؤشر ترابط UI الرئيسي:

حسنا، حتى من الناحية التقنية نحن كنت الغش قليلاً هنا، كما AndroidSchedulers.mainThread متوفرة فقط كجزء من مكتبة ركساندرويد، ونحن لن ننظر حتى الجزء الثالث. ومع ذلك، هذا المثال أعطيك لمحة إلى السلطة ركسجافا وركساندرويد لتبسيط مجالاً لتطوير الروبوت المعروف ليجري معقدة أكثر من اللازم.

زيادة المرونة

مشاهدات تنبعث منها البيانات الخاصة بهم بطريقة تخفي تماما بالطريقة التي تم إنشاؤها من البيانات. إذ لا أستطيع أن أرى الخاص بك المراقبين حتى الطريقة التي تم بها إنشاء البيانات، وأنت حر لتنفيذ الخاص بك Observable في أي بالطريقة التي تريدها.

وبمجرد قيامك بتنفيذ Observable، توفر RxJava مجموعة كبيرة من المشغلين يمكنك استخدامها لتصفية ودمج وتحويل البيانات التي يتم إرسالها من خلال هذه Observable. يمكنك أيضًا تجميع المزيد والمزيد من عوامل التشغيل معًا حتى تقوم بإنشاء تدفق البيانات تمامًا لاحتياجات التطبيق الخاصة بك.

على سبيل المثال، يمكن دمج البيانات من مصادر متعددة، وتصفية تيار المدمجة حديثا، وثم استخدام البيانات الناتجة كالمدخلات لدفق بيانات لاحقة. وتذكر أنه في ركسجافا كل شيء إلى حد كبير هو تعامل كدفق بيانات، حتى يمكنك حتى تطبيق هذه العوامل على غير التقليدية "البيانات"، مثل الأحداث انقر فوق.

إنشاء تطبيقات أكثر استجابة

لقد ولت الأيام عندما تطبيق يمكن أن تفلت من تحميل صفحة من المحتوى وثم تنتظر قيام المستخدم بالنقر فوق الزر التالي. اليوم، يحتاج التطبيق المحمول النمطية الخاصة بك لتكون قادرة على الاستجابة لمجموعة متنوعة ومتزايدة من الأحداث والبيانات، من الناحية المثالية في الوقت الحقيقي. على سبيل المثال، يحتاج التطبيق الخاص بك الشبكات الاجتماعية النمطية يكون الاستماع باستمرار لأمثال واردة وتعليقات وطلبات صديق، بينما إدارة اتصال شبكة اتصال في الخلفية والاستجابة فورا كلما صنابير المستخدم أو الضربات الشديدة الشاشة.

مكتبة ركسجافا صممت لتكون قادرة على إدارة مجموعة واسعة من البيانات والأحداث في وقت واحد وفي الوقت الحقيقي، وجعلها أداة قوية لخلق نوع التطبيقات عالية الاستجابة التي تتوقع مستخدمي الهواتف المتحركة الحديثة.

إضافة ركسجافا إلى استوديو الروبوت

إذا كنت قد قررت أن ركسجافا لديها ما تقدمه ممارسة التنمية الروبوت الخاص بك، ثم هو الخطوة الأولى لتصبح درجة ماجستير ركسجافا إضافة المكتبة إلى المشروع الخاص بك.

إنشاء مشروع جديد "استوديو الروبوت" مع الإعدادات التي تختارها، ثم فتح ملف build.gradle مستوى الوحدة النمطية الخاصة بك وإضافة أحدث إصدار من io.reactivex.rxjava2:rxjava كتبعية.

في وقت كتابة هذا التقرير، كان ركسجافا 2.0.5 أحدث من الإصدار، حتى ملف build.gradle الخاص بي يبدو مثل هذا:

عند مطالبتك، انقر فوق Sync now.

المقبل، فتح ملف MainActivity الخاص بك وإضافة الواردات سوف تحتاج لبدء العمل مع ميزات ركسجافا الأساسية:

إذا كنت تقوم بترحيل من 1 ركسجافا، ثم هذه الواردات قد لا يكون ما تتوقع، كما استخدمت 1 ركسجافا اسم حزمة مختلفة تماما (rx على وجه الدقة).

ومع ذلك، وهذا ليس بتغيير اسم تعسفي: أسماء مجموعة مختلفة تعطيك الخيار لاستخدام ركسجافا 1 و 2 ركسجافا جنبا إلى جنب في نفس المشروع. إذا كنت في منتصف الطريق من خلال مشروع يستخدم 1 ركسجافا، ثم يمكنك إضافة مكتبة ركسجافا 2 والبدء باستخدام ميزات 2 تحديث فورا، دون كسر أي من التعليمات البرمجية الخاصة بك ركسجافا 1.

إذا كنت تبدأ رحلة ركسجافا الخاص بك مع الإصدار 2، ثم فقط أن ندرك أن إذا واجهتك أية دروس ركسجافا أو التعليمات البرمجية باستخدام اسم الحزمة rx، ثم هذا هو رمز ركسجافا 1 ومن غير المحتمل أن تكون متوافقة مع المكتبة الإصدار 2.

لبنات ركسجافا

حتى الآن، لقد بحثنا فقط في ركسجافا على مستوى عال جداً. لقد حان الوقت للحصول على أكثر تحديداً وإلقاء نظرة متعمقة في اثنين من أهم العناصر التي سوف يصل محصول مرة طوال عملك ركسجافا: Observer وObservable.

بنهاية هذا القسم ، لن يكون لديك فهم قوي لهذه المكونات الأساسية فحسب ، بل ستقوم أيضًا بإنشاء تطبيق يعمل بشكل كامل يتكون من Observer تقوم بتبث البيانات و Observable الذي يتفاعل مع هذه الانبعاثات. .

إنشاء Observable

يشبه Observable إلى Iterable في ذلك ، في ضوء تسلسل ، سوف يتكرر خلال هذا التسلسل وينبعث منها كل عنصر ، على الرغم من أن Observables عادة لا تبدأ في بث البيانات حتى يشترك Observer بها.

في كل مرة يرسل Observable عنصرًا ، فإنه يقوم بإخطار Observer الخاص به باستخدام الأسلوب ()onNext. بمجرد نقل Observable كافة قيمه ، فإنه ينتهي عن طريق استدعاء إما:

  • onComplete: يسمى إذا كانت العملية ناجحة.
  • onError: دعا إذا تم طرح Exception.

دعونا ننظر على سبيل مثال. هنا، نحن تقوم بإنشاء ملاحظ أن تنبعث من الأرقام 1، 2، 3 و 4 ومن ثم إنهاء.

لاحظ أن في هذا المثال أنا أشعر بالتدقيق الإملائي بما يحدث بالضبط، حتى لا تدع مقدار التعليمات البرمجية التي وضعت قبالة لكم! هذا رمز أكثر بكثير مما سوف تستخدمها عادة لإنشاء Observable في مشاريعك ركسجافا الحياة الحقيقية.

إنشاء مراقب

Observer هي كائنات تقوم بتعيينها إلى Observable ، باستخدام ()subscribe . بمجرد اشتراك Observer في Observable ، سوف يتفاعل ذلك عندما يصدر Observer أيًا مما يلي:

  • onNext: يObservable وقد تنبعث قيمة.
  • onError: حدث خطأ.
  • onComplete: يObservable الانتهاء من انبعاث جميع القيم الخاصة به.

دعونا إنشاء Observer تشارك لدينا 1، 2، 3، 4 يمكن Observable. للمساعدة في الحفاظ على الأشياء البسيطة، سيكون رد فعل هذا المراقب onNext و onError وonComplete بطباعة رسالة إلى لوجكات مراقب Logcat Monitor:

فتح Android Monitor لوجكات مراقبة بتحديد علامة التبويب "مراقبة الروبوت" من الجزء السفلي من الإطار "استوديو الروبوت" (حيث يتم وضع المؤشر في الصورة أدناه) ثم تحديد علامة التبويب  Logcat.

Reactive Programming Logcat

لوضع هذه التعليمات البرمجية للاختبار، أما إرفاق جهاز الروبوت المادية لتطوير الجهاز الخاص بك أو تشغيل المشروع الخاص بك في المتناوب متوافقة. بمجرد التطبيق الخاص بك يظهر على الشاشة، يجب أن تشاهد البيانات المنبعثة من الخاص بك يمكن ملاحظتها.

Reactive Programming Observer Observable

إنشاء ملاحظ مع رمز أقل

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

والحمد لله، ركسجافا يوفر عددا من وسائل الراحة التي تسمح لك بإنشاء ملاحظ Observable تعليمات برمجية أقل بكثير:

1-Observable.just()

يمكنك استخدام عامل التشغيل.()just لتحويل أي كائن إلى Observable. والنتيجة يمكن Observable ثم تنبعث منها الكائن الأصلي وإكمال.

على سبيل المثال، هنا نحن كنت تنشئ Observable سوف تنبعث منها سلسلة واحدة لجميع Observers:

2-()Observable.from

مشغل ()from. يسمح لك بتحويل مجموعة من كائنات دفق يمكن ملاحظتها. يمكنك تحويل صفيف إلى Observable باستخدام Observable.fromArray، كالابل إلى Observable باستخدام Observable.fromCallable، وإيتيرابل إلى ملاحظ باستخدام Observable.fromIterable.

3-()Observable.range

يمكنك استخدام عامل التشغيل ()range. تنبعث منها مجموعة متسلسلة من الإعداد الصحيحة. العدد الصحيح الأول قمت بتوفير قيمة أولية، والثاني هو عدد الإعداد الصحيحة التي تريد أن تنبعث منها. على سبيل المثال:

4-()Observable.interval

يقوم عامل التشغيل هذا Observable أن تنبعث تسلسل لا حصر له من ترتيب تصاعدي الإعداد الصحيحة، مع كل الانبعاثات مفصولة بفاصل زمني يختاره لك. على سبيل المثال:

5-()Observable.empty

يقوم المشغل ()empty ملاحظ أن تنبعث أي عناصر ولكن Observable عادة، التي يمكن أن تكون مفيدة عندما تحتاج إلى سرعة إنشاء Observable لأغراض الاختبار.

الاستنتاج

في هذه المقالة، نحن تغطية لبنات البناء الأساسية ركسجافا.

في هذه المرحلة ، أنت تعرف كيفية إنشاء والعمل مع Observers و Observables، وكيفية إنشاء اشتراك بحيث يمكن لـ Observables بدء إرسال البيانات. نظرنا بإيجاز أيضًا إلى عدد قليل من المشغلين الذين يسمحون لك بإنشاء مجموعة من Observables المختلفة ، باستخدام رمز أقل بكثير.

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

حتى في ما بعد المقبل، سوف نستكشف بعض مشغلي أقوى في ركسجافا، بما في ذلك العوامل التي يمكن أخيرا تجعل خيوط متعددة على الروبوت تجربة خالية من الألم. لا تنزعج لمعرفة القوة الحقيقية للمكتبة ركسجافا.

وفي الوقت نفسه، تحقق في بعض الوظائف الأخرى ودورات دراسية حول تطوير الروبوت هنا في Envato Tuts +!

رسومات تخطيطية لتدفق البيانات يمكن ملاحظتها من الوثائق ريكتيفيكس، وهي المرخص لها بموجب "الإبداعي العزو 3.0 رخصة".

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.