انواع العمليات (Processes)

Mohammad Laifمنذ 5 سنوات

بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته

 

في الدرس السابق رأينا طبقة الـ Android Runtime والعمليات التي بداخلها وخاصة عملية تطبيقنا في هذا الدرس سنرى انواع العمليات التي يستند عليها نظام الاندرويد لتصنيف عملية تطبيقنا.

 

عند تشغيل اي تطبيق يتم صناعة عملية خاصة به (Linux process) ليعمل بداخلها منفصلاً عن الاخرين. وستضل هذه العملية نشطه الإ في حالة احتياج نظام الاندرويد موارد كالذاكرة (memory) لإستخدامها للتطبيقات الاخرى. والا سوف يقوم النظام بانهاء عمل هذه العملية وذلك يؤدي الى انهاء تطبيقك. فهذا يعني اذا كان تطبيقك سيئ"(مثلاً استخدام خاطئ وقاسي لمكونات مثل: Activity او Service او BroadcastReceiver او يقوم باستخدام الكثير من الموارد) سيقوم نظام الاندرويد بقتل عمليته وهذا يؤدي الى انهاءه.

 

ترتيب العمليات بحسب الاهمية

عندما يقرر نظام الاندرويد بانهاء عمليه ما فانه يبدء بتصنيفهم بالانواع التاليه, ومن ثم يقرر اي العمليه يجب اغلاقها والاصناف هي:


Foreground Process
وهي العمليات التي تكون في الطليعة.
مثال:

  • كـ Activity في تطبيقك يراها المستخدم ويتفاعل معها.
  • او ان تطبيقك يستخدم BroadcastReceiver حالياً.
  • او ان تطبيقك به Service تقوم بعمل شئ ما حالياً.

في هذه الحاله سيحاول نظام الاندرويد بعدم انهاء هذه العمليه لتطبيقك قدر المستطاع. اي تطبيقك في هذه الحاله لن ينهى في وجه المستخدم.

 

Visible Process
العمليات الظاهرة, اي ان العمليه تقوم بانجاز شئ ما والمستخدم على علم به.
مثال:

  • انشئت تطبيق يحتوي على Activity و Dialog عندما يعرض الـ Dialog للمستخدم وكانت الـ Activity تقوم بعمل ما, فانها في هذه الحاله ظاهرة للمستخدم.
  • او ان تطبيقك يحتوي على Service تقوم بعمل مهمه في الخلفيه.
  • او ان تطبيقك يحتوي على Service ملتصقه (Bound) بمهمه تقوم على تشغيل خلفيه حيه (live wallpaper).

فهذا النوع يتفاعل معه المستخدم كذلك, ومن سوء الخلق ان يقوم نظام الاندرويد بانهاء العمليه التي تؤدي الى اغلاق تطبيقك في وجه المستخدم.

 

Service Process
عمليات الخدمات, تطبيقك يحتوي على خدمة (Service).

مثال:

  • تقوم بتحميل البيانات من الانترنت.
  • او اخد نسخة احتياطيه لقاعدة البيانات.
  • او تشغيل موسيقى.

نظام الاندرويد لن ينهي هذا النوع من العلميات, الإ اذا كان يحتاج المزيد من المصادر الذاكرة لتشغيل تطبيقات اخرى و كانت عمليتك تأخد وقت طويل (كتحميل ملفات لمدة 30 دقيقة متواصله). هنا سيقوم بإغلاقها.

 

Cached Process
العمليات المحفوظة.

مثال:

  • قام المستخدم بتصغير تطبيقك فهنا عمليته ستكون محفوظة مؤقتاً.

سيحاول نظام الاندرويد عدم اغلاقها بل سيحاول كذلك عدم اغلاق اي عملية لتطبيقات اخرى محفوظة مؤقتاً! لماذا؟ حتى يكون الوضع سلس للمستخدم عند التنقل من تطبيق الى اخر. ولكن عند حاجة النظام لمزيد من الذاكرة سيقوم باغلاقها فوراً. لذلك نرى بعض الاحيان عند تصغير تطبيق ما لفترة طويله وفتحه مره اخرى فانه يحدث نفسه (اي انه تم انهاءه من قبل النظام وتم تشغيله مره اخرى من قبل المستخدم).

 

في النهاية لاتقلق من هذه الاشياء, الا اذا رأيت تطبيقك يغلق بشكل تلقائي في وجه المستخدم عند فتحه لمده واستخدامه.

 

في هذا الدرس تعرفنا على انواع العمليات وعلى ماذا يستند نظام الاندرويد لتصنيف عملية تطبيقنا. في الدروس القادمه سنتعمق في العلميات (الـ Process) وسنرى الخيوط الحاسوبية (الـ Threads) التي تعيش بداخل العمليات.

 

المصادر والمراجع

 

نهاية الدرس
لاتنسى تتبع الدرس والدورة كذلك لإشعارك عندما يتم التعديل على المتحوى او اضافة المزيد من المعلومات. ايضاً لاتنسى الاعجاب بالدرس ومشاركته مع الاخرين.

المحاضر

Mohammad Laif

محتوى الدورة

تمهيد
1 مقدمة
2 تعرف على التزامن (الـ Concurrency)
3 اخطاء التزامن (الـ Concurrency) الشائعة
العمليات Processes
1 الهيكلة الهندسية لبيئة نظام الاندرويد
2 طبقة الـ Android Runtime و العمليات Processes
3 انواع العمليات (Processes) الدرس الحالي
الخيوط الحاسوبية Threads
1 الخيوط الحاسوبية (Threads)
2 مكونات الخيوط الحاسوبية (Thread)
3 انشاء الخيط الحاسوبي
أنماط التصميم للخيوط الحاسوبية
1 انشاء نمط الـ Handler و Looper و Thread
2 انشاء نمط الـ HandlerThreads
3 ماهو نمط الـ Thread Pools (الـ Executors)
4 استخدام نمط الـ Thread Pools كـ Singleton
5 استخدام الـ Callable مع نمط الـ Thread Pools
6 انشاء بركة خيوط حاسوبية Thread Pools لتسريع قاعدة البيانات
7 انشاء نمط الـ AsyncTask
8 انشاء نمط الـ Loader
الـ Broadcasts
1 تعرف على الـ Broadcast Receiver
2 انشاء الـ Broadcast Receiver بشكل ثابت
3 انشاء الـ Broadcast Receiver بشكل ديناميكي
4 استخدام الـ Local Broadcast للتخاطب بين المكونات
الـ Services
1 تعرف على الـ Services
2 انشاء الـ Started Service
3 انشاء الـ Intent Service
4 انشاء الـ Bound Service
5 استخدام الـ ResultReceiver للتخاطب مع الـ Intent Service
6 استخدام الـ Broadcast للتخاطب مع الـ Started Service
الـ Alarm Manager
1 تعرف على الـ Alarm Manager
2 طرق استخدام الـ Alarm Manager
الـ Jobs
1 استخدام الـ Android JobSchedualer
2 استخدام الـ Firebase JobDispatcher
3 استخدام الـ WorkManager من حزمة JetPack

الكلمات الدليلية

عن الدرس

1 إعجاب
1 متابع
0 مشاركة
3458 مشاهدات
منذ 5 سنوات

التعليقات (0)

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !