Professional Documents
Culture Documents
المحاضرة 6
المحاضرة 6
For example, a login activity may show a screen to enter user name and password.
After clicking a button some authentication process is applied on the data, and before
the login activity ends some other activity is called.
• النشاط بال Androidهو أحد مكونات واجهة المستخدم الرسومية (يحتوي على Ulلتطبيق ما).
(شرح ال activityهي كل شاشة خاصة بالتطبيق تظهر على كامل الشاشة (عند فتح التطبيق) مع كافة
المكونات التي تحتويها )
نظرً ا ألن شاشات الهاتف المحمول صغيرة ،فإن النشاط عادة ما يشغل الشاشة بأكملها. •
إذا فتحت أنشطة متعددة ،فسيتم تكديسها فوق بعضها البعض( .وضعها بال ) Activity Stack •
ال يمكنك ترتيب األنشطة جنبًا إلى جنب ،كما تفعل مع نوافذ سطح المكتب. •
يجب أن تحدد التطبيقات نشا ًطا واحدًا كمهمة رئيسية (متل فانكشن ال )mainأو نقطة دخول. •
الن هذا النشاط هو أول نشاط يتم تنفيذه عند تشغيل التطبيق.
قد يقوم النشاط بنقل التحكم والبيانات إلى نشاط آخر من خالل بروتوكول اتصال بين العمليات يسمى •
(النوايا ) (هذه الترجمة الحرفية اما الحقيقية هي ((( الجسور ))).
على سبيل المثال ،قد يُظهر نشاط تسجيل الدخول شاشة إلدخال اسم المستخدم وكلمة المرور .بعد النقر
فوق الزر ،يتم تطبيق بعض عمليات المصادقة على البيانات ،وقبل انتهاء نشاط تسجيل الدخول ،يتم
استدعاء بعض األنشطة األخرى( .أي الذهاب لصفحة أخرى مثال )
Each Android application runs inside its own instance of a Virtual Machine
(VM).
At any point in time several parallel VM instances could be active (real
)parallelism as opposed to task-switching
Occasionally hardware resources may become critically low and the OS could order
early termination of any process. The decision considers factors such as:
مالحظة هامة سوف اعيد جلب تعريف مصطلح ال instanceمن المحاضرة األولى ألهميته
إلزالة االلتباس عن هذا المصطلح سوف اذكر تعريفه باإلنكليزية والعربية (افضل ترجمة له الحالة )
• instance variable = variable that created into class and can be used
by all methods of class
• Instance variables are variables which are bound to class instances
)(objects
هو متغير مرتبط بالصف الذي انشأنا منه objويمكن استخدامه عبر كل الفانكشن بهذا الصف •
مثال عندنا صف اسمه Schoolوبه متغير instanceاسمه teacher •
وقمت بانشاء obj 2من الصف Schoolاألول school1والثاني school2 •
في كل واحد من هذه االوبجيكت يوجد متغير خاص به منفصل تماما عن غيره •
ومدة وجوده مرتبطة بمدة وجود االوبجيكت الذي انشأه •
في أي وقت من األوقات ،يمكن أن تكون عدة VM instanceمتوازية نشطة (تعمل على التفرع) •
(التوازي الحقيقي بدالً من تبديل المهام () )task-switching
على عكس عملية Windowsأو Unixالشائعة ،ال يتحكم تطبيق Androidتمامًا في إكمال •
دورة حياته( .المعنى قد يجبر النظام تطبيق على التوقف تماما عند حاجته للموارد )
في بعض األحيان قد تصبح موارد األجهزة منخفضة للغاية ويمكن لنظام التشغيل أن يأمر بإنهاء مبكر
ألي عملية .يأخذ القرار بعين االعتبار عوامل مثل( :هام جدا ماهي عوامل إيقاف تطبيق )
أو في عند النشاط، تكون المكونات أحيا ًنا نشطة أو غير نشطة- سلسلة من الحاالت البينية
. مرئية أو غير مرئية- قد يكون احدى الحالتين
The Activity Stack Component's Life Cycle
• The previous activity is pushed-down one level in the stack, and may come
back to the foreground once the new activity finishes.
<77)
• Android 4.0 introduced the 'Recent app’ button to arbitrarily pick as 'next'
any entry currently in the stack (more on this issue later)
Virtual buttons (Android 4.x and 5.x): Back, Home, Recent apps
مكدس النشاط
.يتم جدولة األنشطة في النظام باستخدام مكدس األنشطة
) يتم وضعه أعلى المكدس ليصبح النشاط الجاري (الذي يعمل، عند بدء نشاط جديد
وقد يعود إلى المقدمة، يتم دفع النشاط السابق لألسفل بمقدار مستوى واحد في المكدس
.بمجرد انتهاء النشاط الجديد
يتم إنهاء النشاط الحالي ويتحرك النشاط السابق، إذا ضغط المستخدم على زر الرجوع
ً
.نشطا على المكدس ألعلى ليصبح
زر "التطبيق األخير" الختيار "التالي" بشكل تعسفي أي إدخال موجودAndroid 4.0 قدم
)حاليًا في المكدس (المزيد حول هذه المشكلة الح ًقا
) (الشرح هذا الزر يختار أي التطبيقات تصبح بالمقدمة عوضا عن االلتزام بدور المكدس
Life Cycle Callbacks Component's Life Cycle
When progressing from one state to the other, the OS notifies the application of the
changes by issuing calls to the following protected transition methods:
void onCreate()
void onPause()
void onStart()
void onStop()
void onRestart()
void onDestroy()
void onResume()
يقوم نظام التشغيل بإخطار (اشعار او اخبار ) التطبيق بالتغييرات عن، عند التقدم من حالة إلى أخرى
) (الفانكشنات هامين جدا:) إلى طرق النقل المحمية التاليةissuing calls( طريق إصدار مكالمات
Creating Activities
• To create an activity, a Java class that extends the Activity base class is
created.
import android.app.Activity;
•••
• The activity class loads it Ul component using the XML file defined in the
res/layout folder.
setContentView(R.Layout.activity_main};
داخل المسارxml ومكوناته تكون في ملفActivity إلنشاء اكتيفتي جديدة نقوم بالوراثة من الصف
res /layout
Declaring Activities
• Each activity in the application, must be declared in the
AndroidManifest.xml file. كل نشاط جديد يجب ان يتم تعريفه
داخل ملف اسمه
<activity AndroidManifest.xml
android:label="@string/app_name"
android:name=".Activityl01Activity">
< intent-f ilterX/intent-f ilter>
</activity>
يتم االنتقال من حالة إلى أخرى عن طريق (طرق رد االتصال) المدرجة على حواف الرسم التخطيطي.
Component's Life Cycle
Activity State: RUNNING
That is, another activity seats on top of it and that new activity either is
transparent or doesn't cover the full screen.
Paused activities can be killed by the system when available memory becomes
extremely low.
. يتم إيقاف نشاطك مؤق ًتا إذا فقد التركيز ولكنه ال يزال مرئ ًيا للمستخدم.2
ً
نشاطا آخر يجلس فوقه وهذا النشاط الجديد إما أن يكون شفا ًفا أو ال يغطي ملء وهذا يعني أن هناك
.الشاشة
.)النشاط المتوقف مؤق ًتا على قيد الحياة (الحفاظ على معلومات حالته ومرفقه بمدير النافذة
.يمكن للنظام إيقاف األنشطة المتوقفة مؤق ًتا عندما تصبح الذاكرة المتاحة منخفضة للغاية
Component's Life Cycle
Activity State: STOPPED
3. Your Activity is stopped if it is completely obscured by another activity.
It is no longer visible to the user ( its window is hidden and its life cycle could be
terminated at any point by the system if the resources that it holds are needed
elsewhere).
. يتم إيقاف نشاطك إذا تم حجبه تما ًما بواسطة نشاط آخر.3
. إال أنه يواصل االحتفاظ بجميع معلومات الحالة الخاصة به، على الرغم من توقفه
لم يعد مرئ ًيا للمستخدم (تم إخفاء نافذته ويمكن للنظام إنهاء دورة حياته في أي وقت إذا كانت هناك حاجة
.)إلى الموارد التي يحتوي عليها في مكان آخر
Activity Life Cycle
يتم االتصال به عندما يتم إيقاف النشاط الحالي مؤق ًتا ويتم استئناف النشاط السابقonPause () -
يتم االستدعاء قبل تدمير النشاط بواسطة النظام (إما يدويًا أو بواسطة النظام للحفاظonDestroyO -
)على الذاكرة
• If it is not interrupted or dismissed, the activity performs its job and finally terminates
and releases resources when reaching the onDestroy() event.
(Mandatory)
onCreate() must be implemented by each activity to do its initial setup.
The method is executed onlyonce on the activity's lifetime.
(Highly Recommended)
onPause() should be implemented whenever the application has some
important data to be committed so it could be reused.
ولكن هناك حاالت إلزامية وموصى بها، ال تحتاج التطبيقات إلى تنفيذ كل طريقة من طرق االنتقال
للنظر فيها
)(إلزامي
. بواسطة كل نشاط للقيام بإعداده األوليonCreate () يجب تنفيذ
.يتم تنفيذ الطريقة مرة واحدة فقط في عمر النشاط
)(ينصح به بشده
كلما كان لدى التطبيق بعض البيانات المهمة ليتم االلتزام بها حتى يمكنonPause () يجب تنفيذ
.إعادة استخدامها
Application's Life Cycle
• It may receive a data Bundle object containing the activity's previous state (if any).
ومربعات النص، المتصلة (األزرارUl وعناصر عرض، ُتستخدم عاد ًة لتهيئة هياكل بيانات التطبيق •
. وما إلى ذلك، وتحديد سلوك المستمعين، المحليةJava والقوائم) باستخدام عناصر تحكم،
.)قد يتلقى عنصر حزمة بيانات يحتوي على الحالة السابقة للنشاط (إن وجدت •
onStart () -> onResume () .... متبو ًعا بـ •
onPause()
1. Called when the system is about to transfer control to another activity. It should be
used to safely write uncommitted data and stop any work in progress.
تطبي ًقا قابالً للقتل عندما تكون الموارد الالزمة لتشغيل عملية أخرىAndroid قد ينهي نظام التشغيل
.ذات أهمية أعلى منخفضة للغاية
. يصبح قابال للقتلonDestroy () وonStop () وonPause () :عندما يصل نشاط إلى التوابع
Example
Note Even if an application has only one activity and the activity is killed, the
application is still running in memory.
فسيظل التطبيق قيد، مالحظة حتى إذا كان التطبيق يحتوي على نشاط واحد فقط وتوقف النشاط •
.التشغيل في الذاكرة
مالحظة هامة هذا المثال والساليد الذي بعده هام جدا جدا جدا •
Example
If you click the Back button on the Android emulator, lifecycle Step:
onPause)) – onStop)( - onDestroy()
Click the Home button, click the Overview icon, select the application,
lifecycle Step: onCreate)) – onStart)) – onResume))
Click the Home button and then click the Phone button on the Android
emulator so that the activity is pushed to the background, lifecycle
Step: onPause() – onStop))
Notice that the onDestroy)) event is not called, indicating that the
activity is still in memory. Exit the phone dialer by clicking the Back
button. The activity is now visible again, lifecycle Step: onRestart) (-
onStart)( – onResume))
ودورة، وحدد التطبيق، وانقر فوق أيقونة نظرة عامة، • انقر فوق زر الصفحة الرئيسية
onCreate () - onStart () - onResume () :الحياة الخطوة
بحيث يتمAndroid • انقر فوق زر الصفحة الرئيسية ثم انقر فوق زر الهاتف في محاكي
دفع النشاط إلى الخلفية
onPause () - onStop () :ودورة الحياة الخطوة
مما يشير إلى أن النشاط ال يزال في،onDestroy () • الحظ أنه لم يتم استدعاء حدث
.الذاكرة
النشاط مرئي اآلن مرة."قم بإنهاء برنامج االتصال عبر الهاتف بالنقر فوق الزر "رجوع
، أخرى
onRestart () - onStart () - onResume () :دورة الحياة الخطوة