طبقة الـ Android Runtime و العمليات Processes

Mohammad Laifمنذ 5 سنوات

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

 

كما رأينا في الدرس السابق الطبقات التي يتكون منها نظام الاندرويد, ومايهمنا هو طبقة الـ Android Runtime فهي مركز حديثنا في هذا الدرس, حيث ان تطبيقنا, وعمليته يعيش بداخلها, تغلفه ولاتسمح بخروج شئ منه ولا دخول شئ له كصندوق رملي خاص للعب الاطفال حتى لايتم اتساخ النظام!

 

مكونات طبقة الـ Android Runtime

طبقة الـ Android Runtime تتكون من قسمين بالغالب وهما:

اولاً: الـ Android Runtime اختصاراً تسمى ART

سابقاً كان الاندرويد يستخدم طبقة الـ Dalvik Virtual Machine. ولكن اتت الـ ART لتستبدلها فهي تتمتع بحمايه عاليه وايضاً سرعه اكثر. وبعض هواتف الاندرويد تحتوي على الطبقتين.

دالفيك (سميت تيمناً لبلدة مبرمجها) تم استبدالها بالارت (اندرويد رن تايم) من بعد الاصدار ٤.٤ لنظام الاندرويد, وتم الاستغناء عنها في الاصدارات الحديثة.

الان مايميز الـ ART هو: بأن تطبيقك عندما يعمل فانها تنشئ له عملية خاصة به Process ونسخه كامله من الـ ART ونستطيع القول بانه يعيش بداخل صندوق رمل خاص به SandBox. وبهذا يتمتع بحماية خاصة وايضاً النظام يحمي نفسه من خلال حجز تطبيقك بداخل صندوق الرمل هذا.

 

ثانياً: الـ Core Libraries

مكاتب تستخدمها في تطبيقك لبنائه. وهي عبارة عن كلاسات متنوعة اتت من لغة الجافا, وبالتأكيد انك قمت باستخدام العديد منها في بناء تطبيقاتك السابقة. امثال على هذة المكاتب وكلاساتها: كلاس Integer, String, Thread, Arraylist, FileInputStream, وما الى ذلك.

 

ماذا يوجد بداخل الـ Android Runtime

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

 

مثال لبعض العمليات التي تعمل حالياً في هذه الطبقه:

تخيل ان العمليات التي تعمل حالياً في هذه الطبقه هي المربعات باللون الازرق. الان يوجد ثلاثة عمليات اذن ذلك يعني بوجود ثلاثة تطبيقات نشطة بالعادة.

 

اذا كان تطبيقك يستخدم اكثر من عملية Process فذلك يعني انه Multiprocessing (ليس المقصود هنا الـ Multiprocessing في الجافا, بل ان تطبيقك اصبح متعدد العمليات, اذا اردت ان تجعلة Multiprocessing حقيقي فيجب توفر معالج ثاني في الهاتف وليس نواه اخرى). في كثير من الاحيان لاينصح ان تقوم بإنشاء عملية اخرى لتطبيقك.

 

 

والان لنرى عملية تطبيقنا بشكل كبير:

 

وبداخل هذه العملية نسخة كاملة من الـ Android Runtime خاصة لتطبيقنا كالتالي:

 

وبداخل هذه النسخة يوجد تطبيقنا كالتالي:

 

وبداخل تطبيقنا بشكل افتراضي يوجد الخيط الحاسوبي الرئيسي كالتالي:

 

هنا تعيش شفرتك البرمجية!

 

ماذا لو وجد اكثر من خيط حاسوبي كالصورة التالية:

الـ Other Thread تعتبر خيط ثاني قام المبرمج بتصميمها كما سنرى لاحقاً بالدروس.

 

اذا كان تطبيقك يستخدم اكثر من خيط Threads فذلك يعني انه Multithreading, وحتى يصبح Multithreading حقيقي يجب توفر اكثر من نواه في المعالج, والا اصبح تزامن وهمي Multitasking.


في هذا الدرس تعرفنا على طبقة الـ Android Runtime والعمليات واين يعيش تطبيقنا ومتى نستطيع القول ان تطبيقنا يقوم بعمل التزامن كالـ Multiprocessing او الـ Multithreading او الـ Multitasking. في الدرس القادم سنتعرف على انواع العمليات او بالاحرى كيف يقوم نظام الاندرويد بتصنيف العلميات لديه.

 

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

 

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

المحاضر

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

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

عن الدرس

3 إعجاب
4 متابع
1 مشاركة
3442 مشاهدات
منذ 5 سنوات

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

younes belouche:

مشكور على مجهوداتك .

Mohammad Laif:

العفو اخي وشكراً على ردك.

Marwan DHawi:

تحياتي لك يا غالي ......كلام ومعلومات في قمه الروعه

manar1984:

مبدع في جميع شروحاتك 

ربنا يوفقك 

مركز رفع الصور

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

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