/Fundamental Building Blocks of Android App

Fundamental Building Blocks of Android App

قد يكون أول ما يخطر ببال مبرمج Java أو C عندما يرى كود تطبيق Android لأول مرة، “أين دالة main ؟ ”
في البرامج المكتوبة بالجافا لأجهزة الكمبيوتر من الطبيعي أن نجد دالة main التي توضح كيف يبدأ تنفيذ البرنامج
تكوين الـ Android مختلف بعض الشئ وذلك يرجع لإختلاف طبيعة البيئة المخاطبة بتنفيذ التطبيق، فنحن نعلم أن الـ hardware الذي سينفذ هذا التطبيق سواء كان mobile phone أو tablet أو embedded system  هو أقل من الـ hardware الموجود بجهاز الكمبيوتر الذي ينفذ البرامج المكتوبة بـ Java أو C أو غيرهما

لذلك لا تحتوي تطبيقات الأندرويد دالة main، ولكن تطبيقات الأندرويد قد تستخدم أجزاء من تطبيقات أخرى، وذلك دون الحاجة لتحميل هذه التطبيقات بالكامل، يستطيع مبرمجي الأندوريد إستغلال تلك القدرة في تصميم تطبيقات تستطيع القيام بوظائف كبيرة بإستغلال resources قليلة، ينطبق عليها مقولة (lean and mean)

نستطيع تنفيذ ذلك ببناء التطبيق من 4 مكونات رئيسية، عبارة عن Java Classes، نستعرض سريعا هذه المكونات الأربع، وندقق النظر قليلا على أولهم

1- Activity Class

هي الواجهة المرئية التي يتعامل معها المستخدم، تمكنه من إرسال وإستقبال البيانات مع التطبيق، مثل الواجهة الرئيسية لأي تطبيق
على سبيل المثال الـ phone dialer

المكونات الثلاثة الأخرى تعمل في الخلفية لذلك ليس لها user interface :

2- Services

هي المسئولة عن العمليات الطويلة والعمليات التي تعمل في الخلفية مثل music player حيث بإمكانك أن تترك الملف الصوتي يعمل في حين أنك تستخدم تطبيق آخر مثل تصفح البريد أو غيره

3- Broadcast receiver

هي المسئولة عن الإنصات والرد على الـ events التي تحدث على الجهاز، مثل تطبيقات الدردشة أو الرسائل التي تنتظر وصول رسالة جديدة لإظهار تنبيه

4- Content Provider

هي التي تُمكن التطبيقات المختلفة من تخزين ومشاركة البيانات، مثل تطبيقات الـ web browsers فهي تملك bookmarks التي يستطيع المستخدم الإضافة والحذف منها

[divider scroll_text=””]

نتكلم بتوسع أكثر قليلا عن الـ Activity Class

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

يمكن تشبيه الـ Activity ببطاقات الكوتشينه المرتبة فوق بعضها :
بطاقة واحدة هي التي تظهر
بطاقة واحدة هي الفعّالة
عند وضع بطاقة جديدة فإنها تكون في المقدمة

كل تطبيق في الغالب يتكون من عدة Activities
الـ Activity تستطيع أن تشغل Activity أخرى في تطبيق آخر

بعض المفاهيم الهامة :

Tasks

هي عبارة عن مجموعة من الـ activities التي يتفاعل المستخدم معها وليس شرطًا أن تكون من نفس التطبيق

Task Backstack

عندما تبدأ Activity جديدة فإنها تتصدر مقدمة الـ Task Backstack وعند إغلاق Activity فإنها  تغادر الـ Task  Backstack

1مصدر الصورة : http://developer.android.com/guide/components/tasks-and-back-stack.html

[divider scroll_text=””]

Activity LifeCycle

عند بدء Activity جديدة فإنها تتصدر مقدمة Task Backstack كما ذكرنا سابقًا وتصبح هي الـ Activity الفعّالة، أما الـ Activity التي كانت فعالة قبلها فأنها تكون خلفها في الـ Task Backstack

نستعرض بعض الدوال الهامة التي تمثل ما نستطيع أن نطلق عليه دورة حياة الـ Activity :

OnCreate():

يتم إستدعاء هذه الدالة عند بداية بناء الـ Activity ، تقوم بإظهار الـ UI على سبيل المثال
وتنتقل الـ Activity بعدها لتشغيل دالة :()OnStart

OnResume():

يتم إستدعاء هذه الدالة عندما تظهر الـ Activity مرة أخرى بعد أن توقفت

OnPause():

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

2مصدر الصورة : http://developer.android.com/reference/android/app/Activity.html

لتوضيح هذه الحالات برمجيا يمكن استعراض هذا الكود الذي يوضح كل حالة بـ Logcat الذي يستخدم في الـ debugging :