سلاسل خلفية مرحبًا، في هذا الفيديو، سنتحدث عن كيف تبدأ مهمة في الخلفية في تطبيق Android الخاص بك الآن، في Java المهمة القابلة للتشغيل هي وحدة عمل ولذا يمكننا تخصيص أشياء مثل مستوى الأولوية للوظيفة Priority ويمكننا أيضًا ضبطه على التأخير Delay حتى يتم تشغيله في المستقبل لذلك نعطيه طابعًا زمنيًا لذا، هذا ما يبدو عليه عند إنشاء مهمة قابلة للتشغيل runnable task في Java أنت تقول، قابلة للتشغيل، أعطها اسمًا ثم اجعلها فئة جديدة قابلة للتشغيل لديها طريقة واحدة بداخلها تسمى run وبالتالي فإن الغرض من المهمة القابلة للتشغيل هو بحيث يمكنك تقسيمها إلى خيوط مختلفة الآن، الخيط thread هو عملية أو مسار أن العملية تمر وبالتالي فإن الخيط الرئيسي هو عادةً ما نبرمج عليه لأننا نفكر في برنامج متسلسل لذلك دعنا نلقي نظرة على بعض التعليمات البرمجية لكيفية القيام بذلك إذن ما لدي هنا هو عينة من مستمع النقر للزر ولذا لدينا حدث onclick الآن، ما لدينا بالداخل مختلف قليلاً لقد أنشأت خيطا جديدًا، وداخل هذا الخيط لقد صنعت ما يسمى بوحدة العمل unitofwork لذلك سننظر إلى ذلك في ثانية فقط إنها حقًا عملية قابلة للتشغيل ثم نقول للخيط أن يبدأ إذن ما سيفعله هذا هو أنه سيقول لا تلمس الخيط الرئيسي حيث نستمع إلى نقرات الماوس لنبدأ خيط آخر ربما يكون لهذا أولوية أقل وسنترك العملية تجري هناك لذلك قد ترغب في القول، لنقم بتنزيل ملف أو دعنا نستعلم عن قاعدة بيانات أو لنرسم شيئًا ما أو نعرض صورة وبالتالي من المحتمل أن تستغرق العملية بعض الوقت معظم الوقت لا داعي للقلق بشأن المدة التي يستغرقها شيء ما لأن العمليات تكاد تكون فورية لكن في هذه الحالة نتظاهر بأن لدينا شيئًا بطيئًا جدًا لنلقِ نظرة على الكود التالي هذا ما تبدو عليه وحدة العمل هذه هي العملية القابلة للتشغيل لذا فإن العملية runnable ستكون لديه طريقة واحدة تسمى run ثم في حالتي، سنقوم بالبرمجة هنا هو أنني سأقوم بمحاكاة شيء ما يستغرق ذلك خمس ثوان ولذا لدي بيان التأخير delay هنا أو بيان النوم sleep الذي يقول مهما فعلت، توقف ولا تذهب أبعد من ذلك لمدة 5000 مللي ثانية الآن، عندما نصل إلى نهاية ذلك أريد أن يظهر شيئًا ما على الشاشة أريد أن أضع toast ولعمل toast عليك أن تكون قادرًا على تشغيل ذلك على الموضوع أو الخيط الرئيسي main thread ولذا علينا إنشاء عملية أخرى قابلة للتشغيل داخل هذا runnable إذن، يحتوي هذا القابل للتشغيل runnable على أمر خاص إنه فريد لنظام Android يقول يعمل على خيط UI thread لذلك هذا يعني الذهاب إلى الخيط الرئيسي الذي كان يتعامل مع جميع نقرات الزر ثم قم بهذه العملية ويمكنك أن ترى أن toast هو شيء ما يكون واجهة المستخدم إذا كان هذا شيئًا آخر، مثل الطباعة إلى ملف السجل أو فقط احسب إجابة وأعدها فلا داعي للقلق يعمل على خيط واجهة المستخدم ولكن إذا كان عليك تحديث حقل نصي أو تغيير لون الزر أو، في هذه الحالة،القيام ب toast فأنت تلمس مؤشر ترابط أو خيط واجهة المستخدم وهذا هو سبب إخبارنا بالخيط الذي يجب تشغيله وبالتالي فإن وحدة العمل هذه هي ما نضعه في نقرة الزر button click الآن، هناك طريقة أخرى للتعامل مع هذا بدلاً من استخدام التشغيل على خيط واجهة المستخدم run on UI thread قد يستخدم معظم المبرمجين هذا يسمونه بالمعالج handler لذا تذكر أن المعالج مثل ذراع الروبوت الذي يلتقط المهمة ويضعها على الحزام الناقل هكذا يقول المعالج سأقوم بإنشاء مثيل جديد لكائن المعالج وسأحدد أن هذا من Looper الرئيسي main ثم في الداخل هنا يمكنك إخباري أنني سأقوم بنشر كائن جديد قابل للتشغيل في الحلقة الرئيسية main loop وبالتالي نشر عنصر جديد وهذا مثل إدخاله في الحزام الناقل في أرضية المصنع وعندما تنشر يمكنك أن تفترض أنه سيتم التعامل معه على الفور ولكن هناك أوامر أخرى، مثل POST مع تأخير ومن ثم يمكنك إعداد مؤقت ليقول افعل هذا في خمس ثوان وبعد ذلك سينتظر قبل أن يتم تنفيذه فعليًا هذه بعض الأمثلة عن كيفية قيامك بمهام قابلة للتشغيل وكيف تنشرها وكيف تحمي حلقتك الرئيسية واجهة المستخدم الخاصة بك، بحيث لا يتم قفلها لذا سنبرمج بعضًا من هذا وسنرى مثالاً على كيفية عملها