طبقة الـ Android Runtime و العمليات Processes
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
كما رأينا في الدرس السابق الطبقات التي يتكون منها نظام الاندرويد, ومايهمنا هو طبقة الـ 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. في الدرس القادم سنتعرف على انواع العمليات او بالاحرى كيف يقوم نظام الاندرويد بتصنيف العلميات لديه.
المصادر والمراجع
- Platform Architecture | Android Developers.
- Process | Android Developers.
- Processes and threads overview | Android Developers.
- Processes and Application Lifecycle | Android Developers.
نهاية الدرس
لاتنسى تتبع الدرس والدورة كذلك لإشعارك عندما يتم التعديل على المتحوى او اضافة المزيد من المعلومات. ايضاً لاتنسى الاعجاب بالدرس ومشاركته مع الاخرين.
محتوى الدورة
الكلمات الدليلية
عن الدرس
3 إعجاب |
4 متابع |
1 مشاركة |
3442 مشاهدات |
منذ 5 سنوات |
التعليقات (4)
مشكور على مجهوداتك .
العفو اخي وشكراً على ردك.
تحياتي لك يا غالي ......كلام ومعلومات في قمه الروعه
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !