<activity>

بناء الجملة:
<activity android:allowEmbedded=["true" | "false"]
          android:allowTaskReparenting=["true" | "false"]
          android:alwaysRetainTaskState=["true" | "false"]
          android:autoRemoveFromRecents=["true" | "false"]
          android:banner="drawable resource"
          android:canDisplayOnRemoteDevices=["true" | "false"]
          android:clearTaskOnLaunch=["true" | "false"]
          android:colorMode=[ "hdr" | "wideColorGamut"]
          android:configChanges=["colorMode", "density",
                                 "fontScale", "fontWeightAdjustment",
                                 "grammaticalGender", "keyboard",
                                 "keyboardHidden", "layoutDirection", "locale",
                                 "mcc", "mnc", "navigation", "orientation",
                                 "screenLayout", "screenSize",
                                 "smallestScreenSize", "touchscreen", "uiMode"]
          android:directBootAware=["true" | "false"]
          android:documentLaunchMode=["intoExisting" | "always" |
                                  "none" | "never"]
          android:enabled=["true" | "false"]
          android:enabledOnBackInvokedCallback=["true" | "false"]
          android:excludeFromRecents=["true" | "false"]
          android:exported=["true" | "false"]
          android:finishOnTaskLaunch=["true" | "false"]
          android:hardwareAccelerated=["true" | "false"]
          android:icon="drawable resource"
          android:immersive=["true" | "false"]
          android:label="string resource"
          android:launchMode=["standard" | "singleTop" |
                              "singleTask" | "singleInstance" | "singleInstancePerTask"]
          android:lockTaskMode=["normal" | "never" |
                              "if_whitelisted" | "always"]
          android:maxRecents="integer"
          android:maxAspectRatio="float"
          android:multiprocess=["true" | "false"]
          android:name="string"
          android:noHistory=["true" | "false"]  
          android:parentActivityName="string" 
          android:persistableMode=["persistRootOnly" | 
                                   "persistAcrossReboots" | "persistNever"]
          android:permission="string"
          android:process="string"
          android:relinquishTaskIdentity=["true" | "false"]
          android:requireContentUriPermissionFromCaller=["none" | "read" | "readAndWrite" |
                                                         "readOrWrite" | "write"] 
          android:resizeableActivity=["true" | "false"]
          android:screenOrientation=["unspecified" | "behind" |
                                     "landscape" | "portrait" |
                                     "reverseLandscape" | "reversePortrait" |
                                     "sensorLandscape" | "sensorPortrait" |
                                     "userLandscape" | "userPortrait" |
                                     "sensor" | "fullSensor" | "nosensor" |
                                     "user" | "fullUser" | "locked"]
          android:showForAllUsers=["true" | "false"]
          android:stateNotNeeded=["true" | "false"]
          android:supportsPictureInPicture=["true" | "false"]
          android:taskAffinity="string"
          android:theme="resource or theme"
          android:uiOptions=["none" | "splitActionBarWhenNarrow"]
          android:windowSoftInputMode=["stateUnspecified",
                                       "stateUnchanged", "stateHidden",
                                       "stateAlwaysHidden", "stateVisible",
                                       "stateAlwaysVisible", "adjustUnspecified",
                                       "adjustResize", "adjustPan"] >   
    ...
</activity>
الواردة في:
<application>
يمكن أن يحتوي على:
<intent-filter>
<meta-data>
<layout>
description:
تعريف نشاط (فئة فرعية Activity) ينفِّذ جزءًا من واجهة المستخدم المرئية للتطبيق. يجب تمثيل جميع الأنشطة بعناصر <activity> في ملف البيان. وأي شيء لم يتم الإعلان عنه لا يراه النظام ولا يتم تشغيله أبدًا.
:
android:allowEmbedded

يشير إلى أنّه يمكن بدء النشاط كنشاط ثانوي مضمّن لنشاط آخر، لا سيما في حال وضع الطفل في حاوية، مثل Display يملكه نشاط آخر. على سبيل المثال، توضّح الأنشطة المستخدَمة في إشعارات Wear المخصّصة ذلك حتى يتمكّن Wear من عرض النشاط في ساحة مشاركات السياق الخاصة به، والذي تتم في عملية أخرى.

القيمة التلقائية لهذه السمة هي false.

android:allowTaskReparenting
ما إذا كان يمكن أن ينتقل النشاط من المهمة التي بدأته إلى المهمة التي يجذبها في الوقت التالي الذي تأتي فيه هذه المهمة. تكون قيمة الحقل "true" إذا كان بالإمكان تحريكها، والقيمة "false" إذا بقيت مع المهمة التي بدأت فيها.

إذا لم يتم ضبط هذه السمة، يتم تطبيق القيمة التي حدّدتها السمة allowTaskReparenting المقابلة للعنصر <application> على النشاط. القيمة التلقائية هي "false".

عادةً، عند بدء النشاط، يرتبط بمهمة النشاط الذي بدأه ويبقى هناك طوال حياته. يمكنك استخدام هذه السمة لفرض إعادة الارتباط بالمهمة التي تميل إليها عندما لا تظهر مهمتها الحالية. وعادةً ما يستخدم هذا لنقل أنشطة التطبيق إلى المهمة الرئيسية المرتبطة بهذا التطبيق.

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

يتم تحديد التقارب في النشاط من خلال السمة taskAffinity. يتم تحديد التقارب من المهمة من خلال قراءة التقارب للنشاط الجذري. لذلك، حسب التعريف، يكون النشاط الجذر دائمًا في مهمة بنفس التقارب. وبما أنّ الأنشطة التي تتضمّن وضعَي التشغيل "singleTask" أو "singleInstance" لا يمكن أن تكون إلا في جذر المهمة، تقتصر إعادة التربية على الوضعَين "standard" و"singleTop". (اطّلِع أيضًا على السمة launchMode).

android:alwaysRetainTaskState
ما إذا كان النظام دائمًا ما يحافظ على حالة المهمة التي يكون فيها النشاط. "true" إذا كان الأمر كذلك، و"false" إذا كان بإمكان النظام إعادة ضبط المهمة إلى حالتها الأولى في مواقف معيّنة. القيمة التلقائية هي "false". هذه السمة ذات معنى فقط للنشاط الجذر للمهمة. يتم تجاهله لجميع الأنشطة الأخرى.

عادةً ما يمحو النظام المهمة، ويزيل جميع الأنشطة من الحزمة فوق النشاط الجذر، في مواقف معينة عندما يعيد المستخدم اختيار تلك المهمة من الشاشة الرئيسية. عادةً ما يتم ذلك إذا لم يزور المستخدم المهمة لفترة معينة من الوقت، مثل 30 دقيقة.

ومع ذلك، عندما تكون هذه السمة هي "true"، يعود المستخدمون دائمًا إلى المهمة في حالتها الأخيرة، بغض النظر عن كيفية الوصول إليها. ويكون هذا مفيدًا في تطبيقات مثل متصفح الويب حيث توجد حالات كثيرة، مثل عدة علامات تبويب مفتوحة، لا يرغب المستخدمون في فقدانها.

android:autoRemoveFromRecents
ما إذا كانت المهام التي تم تشغيلها من خلال النشاط باستخدام هذه السمة ستظل في شاشة أحدث حتى اكتمال آخر نشاط في المهمة. إذا كانت true، ستتم إزالة المهمة تلقائيًا من شاشة "الأخيرة". يؤدي هذا الإجراء إلى إلغاء استخدام المتصل FLAG_ACTIVITY_RETAIN_IN_RECENTS. يجب أن تكون قيمة منطقية، إما "true" أو "false".
android:banner
مورد قابل للرسم يوفّر إعلان بانر رسومي موسَّع للعنصر المرتبط به. استخدِمها مع العلامة <activity> لتقديم إعلان بانر تلقائي لنشاط محدّد أو مع العلامة <application> لتوفير إعلان بانر لجميع أنشطة التطبيقات.

يستخدم النظام البانر لتمثيل تطبيق في شاشة Android TV الرئيسية. بما أنّ البانر لا يظهر إلا على الشاشة الرئيسية، لا يتم تحديده إلّا من خلال التطبيقات التي تتضمّن نشاطًا يعالج CATEGORY_LEANBACK_LAUNCHER.

يتم ضبط هذه السمة كمرجع لمورد قابل للرسم يحتوي على الصورة، مثل "@drawable/banner". لا يوجد بانر تلقائي.

لمزيد من المعلومات، يُرجى الاطّلاع على مقالة توفير بانر للشاشة الرئيسية في قسم "بدء استخدام تطبيقات التلفزيون".

android:canDisplayOnRemoteDevices

يشير هذا الحقل إلى ما إذا كان من الممكن عرض النشاط على جهاز بعيد قد يعمل أو لا يعمل بنظام التشغيل Android. ويجب أن تكون قيمة منطقية، إما "true" أو "false".

القيمة التلقائية لهذه السمة هي "true".

android:clearTaskOnLaunch
ما إذا تمت إزالة جميع الأنشطة من المَهمة، باستثناء النشاط الجذر، عند إعادة تشغيلها من الشاشة الرئيسية "true" إذا كانت المهمة تتم إزالتها إلى النشاط الجذر دائمًا، و"false" إذا لم تتم إزالتها. القيمة التلقائية هي "false". هذه السمة ذات معنى فقط للأنشطة التي تبدأ مهمة جديدة - النشاط الجذر. ويتم تجاهله في جميع الأنشطة الأخرى في المهمة.

عندما تكون القيمة "true"، في كل مرة يبدأ فيها المستخدمون المهمة، يتم توجيههم إلى النشاط الجذري بغض النظر عن آخر ما يفعلونه في المهمة وما إذا كانوا قد استخدموا زر "الرجوع" أو "الصفحة الرئيسية" لمغادرة هذه المهمة. عندما تكون القيمة "false"، يمكن محو المهمة من الأنشطة في بعض الحالات، ولكن ليس دائمًا. لمزيد من المعلومات، يُرجى الاطّلاع على السمة alwaysRetainTaskState.

افترض أن المستخدم يشغّل النشاط "س" من الشاشة الرئيسية، ومن هناك ينتقل إلى النشاط س. ينقر المستخدم بعد ذلك على الصفحة الرئيسية، ثم يعود إلى النشاط P. عادةً، يرى المستخدم النشاط س، نظرًا لأن هذا هو آخر ما يفعله في مهمة P. ومع ذلك، إذا ضبطت P هذه العلامة على "true"، تتم إزالة جميع الأنشطة فوقها - في هذه الحالة، Q - عندما يشغّل المستخدم النشاط P من الشاشة الرئيسية. لذلك، يرى المستخدم P فقط عند العودة إلى المهمة.

إذا كانت هذه السمة وallowTaskReparenting كلاهما "true"، يتم نقل أي أنشطة يمكن إعادة إثبات ملكيتها إلى المهمة التي تتشاركان في تقارب معها. ويتم بعد ذلك تجاهل الأنشطة المتبقية.

ويتم تجاهل هذه السمة في حال عدم ضبط السمة FLAG_ACTIVITY_RESET_TASK_IF_NEEDED.

android:colorMode

تُحدِّد وضع الألوان للنشاط. وإذا تم تحديدها، يمكن أن تكون إما hdr أو wideColorGamut.

إذا كانت السمة hdr، تطلب عرض النشاط في نطاق عالي الديناميكية إذا كان الجهاز يتيح ذلك.

إذا كانت السمة wideColorGamut، تطلب عرض النشاط في وضع مجموعة الألوان الواسعة على الأجهزة المتوافقة. في وضع مجموعة الألوان الواسعة، يمكن عرض نافذة خارج نطاق SRGB لعرض ألوان أكثر حيوية. إذا كان الجهاز لا يتيح عرض مجموعة الألوان الواسعة، لن يكون لهذه السمة أي تأثير. لمزيد من المعلومات حول العرض في وضع الألوان العريضة، يمكنك الاطّلاع على تحسين الرسومات باستخدام محتوى ألوان واسعة.

android:configChanges
يتمّ تغيير إعدادات إعداد القوائم التي يعالجها النشاط بنفسه. عند حدوث تغيير في الضبط في وقت التشغيل، يتم إيقاف النشاط وإعادة تشغيله تلقائيًا، ولكن الإعلان عن إعدادات باستخدام هذه السمة يمنع النشاط من إعادة التشغيل. بدلاً من ذلك، يظل النشاط قيد التشغيل ويتم استدعاء طريقة onConfigurationChanged().

ملاحظة: استخدِم هذه السمة في حالات خاصة فقط لتحسين أداء التطبيق وتجاوبه. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة التعامل مع التغييرات في الإعدادات.

السلاسل التالية هي قيم صالحة لهذه السمة. يتم الفصل بين القيم المتعددة باستخدام |، مثل "locale|navigation|orientation".

القيمة الوصف
"colorMode"

تغيرت إمكانات وضع الألوان للشاشة (سلسلة الألوان أو النطاق الديناميكي).

ملاحظة: يختلف وضع اللون الذي يطلبه النشاط باستخدام السمة colorMode أو في وقت التشغيل عن إمكانية أوضاع الألوان المختلفة. لا يؤدي تغيير وضع الألوان الذي تستخدمه إلى تغيير في التهيئة، لأن إمكانات الألوان للشاشة لم تتغير.

"density"

يتم الآن تغيير كثافة العرض، مثلاً عندما يحدّد المستخدم مقياس عرض مختلفًا أو يتم تفعيل شاشة عرض مختلفة.

تمّت الإضافة في المستوى 24 من واجهة برمجة التطبيقات

"fontScale" تغيير في عامل تغيير حجم الخط، مثلاً عندما يختار المستخدم حجم خط عامًا جديدًا
"fontWeightAdjustment" تم تغيير مقدار زيادة عرض الخط.
"grammaticalGender" تم تغيير الجنس النحوي للغة. يمكنك الاطّلاع على GrammaticalInflectionManager.

تمّت الإضافة في المستوى 34 من واجهة برمجة التطبيقات

"keyboard" تمثّل هذه السمة تغييرًا في نوع لوحة المفاتيح، كما هو الحال عند توصيل المستخدم بلوحة مفاتيح خارجية.
"keyboardHidden" تمثّل هذه السمة تغييرًا في تسهيل استخدام لوحة المفاتيح، على سبيل المثال، عندما يكشف المستخدم عن لوحة مفاتيح الجهاز.
"layoutDirection"

يشير ذلك المصطلح إلى تغيير في اتجاه التنسيق، مثل الانتقال من اليسار إلى اليمين (LTR) إلى اليمين إلى اليسار (RTL).

تمّت الإضافة في المستوى 17 من واجهة برمجة التطبيقات

"locale" تغيير على اللغة، مثلاً عندما يختار المستخدم لغة جديدة يظهر بها النص
"mcc" تغيير في رمز البلد المخصّص للأجهزة الجوّالة IMSI (مركز عملائي) عند اكتشاف شريحة SIM تعمل على تعديل حساب "مركز عملائي".
"mnc" تغيير في رمز شبكة الجوّال IMSI عند رصد شريحة SIM تُحدِّث MNC.
"navigation" يتم تغيير TA إلى نوع التنقل (كرة التتبع أو لوحة التحكم). في العادة، لا يحدث هذا الأمر.
"orientation"

تغيير في اتجاه الشاشة، على سبيل المثال عند تدوير المستخدم للجهاز.

ملاحظة: إذا كان تطبيقك يستهدف الإصدار 3.2 من نظام التشغيل Android (المستوى 13 من واجهة برمجة التطبيقات) أو الإصدارات الأحدث، يجب أيضًا توضيح إعدادات "screenLayout" و"screenSize" لأنّ تنسيق الشاشة وحجمها يمكن أن يتغير عندما يبدِّل الجهاز بين الاتجاه العمودي والأفقي.

"screenLayout" تغيير في تنسيق الشاشة، مثلاً عندما يتم تفعيل شاشة عرض مختلفة
"screenSize"

تغيير حجم الشاشة المتاح حاليًا

ويمثّل ذلك تغييرًا في الحجم المتاح حاليًا مقارنةً بنسبة العرض إلى الارتفاع الحالية، لكي يتغيّر عندما يبدِّل المستخدم بين الوضعَين الأفقي والعمودي.

تمّت الإضافة في المستوى 13 من واجهة برمجة التطبيقات

"smallestScreenSize"

تغيير في حجم الشاشة

ويمثّل ذلك تغيّرًا في الحجم بغض النظر عن الاتجاه، لذلك يتغيّر فقط عند تغيّر الحجم الفعلي للشاشة، مثلاً عند التبديل إلى شاشة عرض خارجية. ويتوافق تغيير هذه الإعدادات مع تغيير في إعدادات smallestWidth.

تمّت الإضافة في المستوى 13 من واجهة برمجة التطبيقات

"touchscreen" إجراء تغيير على الشاشة التي تعمل باللمس في العادة، لا يحدث هذا الأمر.
"uiMode" تغيير في وضع واجهة المستخدم، كما هو الحال عندما يضع المستخدم الجهاز على سطح مكتب أو إرساء سيارة أو يتغير الوضع الليلي. لمزيد من المعلومات حول الأوضاع المختلفة لواجهة المستخدم، يُرجى الاطّلاع على UiModeManager.

تمّت إضافتها في المستوى 8 من واجهة برمجة التطبيقات

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

ملاحظة: لمعالجة تغييرات الضبط ذات الصلة بنوافذ متعددة، استخدِم كلاً من "screenLayout" و"smallestScreenSize". تتوفّر ميزة النوافذ المتعددة في الإصدار 7.0 من نظام التشغيل Android (المستوى 24 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث.

android:directBootAware

تحدِّد هذه السمة ما إذا كان النشاط مع مراعاة التدريب المباشر، أي ما إذا كان من الممكن تشغيله قبل فتح قفل المستخدم للجهاز.

ملاحظة: أثناء التشغيل المباشر، لا يمكن لأي نشاط في تطبيقك الوصول إلا إلى البيانات المُخزنة في مساحة تخزين محمية على الجهاز.

القيمة التلقائية هي "false".

android:documentLaunchMode
يحدد هذا الإعداد كيفية إضافة مثيل جديد من النشاط إلى مهمة في كل مرة يتم تشغيلها. تسمح هذه السمة للمستخدم بعرض مستندات متعددة من التطبيق نفسه في شاشة أحدث المستندات.

تتضمن هذه السمة أربع قيم ينتج عنها التأثيرات التالية عندما يفتح المستخدم مستندًا باستخدام التطبيق:

القيمة الوصف
"intoExisting" يبحث النظام عن مهمة يكون هدفها الأساسي هو ComponentName ومعرّف الموارد المنتظم (URI) للبيانات، ما يتطابق مع تلك الخاصة بهدف الإطلاق. وفي حال عثور النظام على مهمة مماثلة، يمحو النظام المهمة ويعيد تشغيلها، ويتلقّى النشاط الجذر استدعاءً إلى onNewIntent(android.content.Intent). إذا لم يعثر النظام على مثل هذه المهمة، ينشئ النظام مهمة جديدة.
"always" يؤدي النشاط إلى إنشاء مهمة جديدة للمستند، حتى إذا كان المستند مفتوحًا بالفعل. ويشبه هذا الإجراء ضبط كلتا العلامتين FLAG_ACTIVITY_NEW_DOCUMENT وFLAG_ACTIVITY_MULTIPLE_TASK.
"none" لا يؤدي النشاط إلى إنشاء مهمة جديدة للنشاط. هذه هي القيمة التلقائية التي تنشئ مهمة جديدة فقط عند ضبط FLAG_ACTIVITY_NEW_TASK. تتعامل شاشة "الأخيرة" مع النشاط كما هو افتراضيًا، حيث تعرض مهمة واحدة للتطبيق، والتي يتم استئنافها من أي نشاط استدعىه المستخدم آخر مرة.
"never" لا يتم إطلاق النشاط في مستند جديد حتى إذا كان الهدف يحتوي على FLAG_ACTIVITY_NEW_DOCUMENT. يؤدي ضبط هذه السياسة إلى إلغاء سلوك العلامتَين FLAG_ACTIVITY_NEW_DOCUMENT وFLAG_ACTIVITY_MULTIPLE_TASK، إذا تم ضبط أي منهما في النشاط، وستعرض شاشة "العناصر الأخيرة" مهمة واحدة للتطبيق، يتم استئنافها من أي نشاط استدعاه المستخدم آخر مرة.

ملاحظة: بالنسبة إلى القيم الأخرى غير "none" و"never"، يتم تحديد النشاط باستخدام launchMode="standard". إذا لم يتم تحديد هذه السمة، يتم استخدام السمة documentLaunchMode="none".

android:enabled
ما إذا كان بإمكان النظام إنشاء مثيل للنشاط. تكون القيمة "true" إذا أمكن، و"false" إذا لم يكن الأمر كذلك. والقيمة التلقائية هي "true".

يحتوي عنصر <application> على سمة enabled خاصة به تنطبق على جميع مكوّنات التطبيق، بما في ذلك الأنشطة. يجب أن تكون السمتان <application> و<activity> "true"، لأنهما تكونان تلقائيًا، ليتمكّن النظام من إنشاء مثيل للنشاط. وإذا كانت أي منهما "false"، لا يمكن إنشاء مثيل.

android:enableOnBackInvokedCallback
تتيح لك هذه العلامة تفعيل الصور المتحركة في نظام التوقّع على مستوى النشاط. ويجعل هذا السلوك أكثر سهولة في نقل التطبيقات الكبيرة المتعددة الأنشطة لاستخدام إيماءات الرجوع التنبؤية.

في حال ضبط السمة android:enableOnBackInvokedCallback=false، يتم إيقاف الصور المتحركة القائمة على التوقّعات، سواء على مستوى النشاط أو على مستوى التطبيق، استنادًا إلى المكان الذي ضبطت فيه العلامة، ثم يتم توجيه النظام إلى تجاهل الطلبات الواردة إلى OnBackInvokedCallback Platform API.

android:excludeFromRecents

ما إذا كان سيتم استبعاد المهمة التي بدأها هذا النشاط من شاشة "الأخيرة" أي عندما يكون هذا النشاط هو النشاط الجذر لمهمة جديدة، تحدّد هذه السمة ما إذا كانت المهمة ستظهر في قائمة التطبيقات المستخدمة مؤخرًا. وستظهر القيمة "true" إذا كانت المهمة مستبعدة من القائمة، و"false" إذا كانت مضمّنة. القيمة التلقائية هي "false".

android:exported

ما إذا كان يمكن إطلاق النشاط بواسطة مكونات التطبيقات الأخرى:

  • إذا كانت السمة "true"، سيكون النشاط متاحًا لأي تطبيق وقابل للتشغيل حسب اسم فئته بالضبط.
  • إذا كانت السمة "false"، لا يمكن إطلاق النشاط إلا من خلال مكونات التطبيق نفسه، أو التطبيقات التي تحمل رقم تعريف المستخدم نفسه، أو مكونات النظام المميزة. هذه هي القيمة التلقائية في حال عدم توفّر فلاتر أهداف.

إذا كان أحد الأنشطة في تطبيقك يتضمّن فلاتر الأهداف، اضبط هذا العنصر على "true" للسماح للتطبيقات الأخرى بتشغيله. على سبيل المثال، إذا كان النشاط هو النشاط الرئيسي للتطبيق ويتضمّن category android.intent.category.LAUNCHER.

وإذا تم ضبط هذا العنصر على "false" وحاول أحد التطبيقات بدء النشاط، يطرح النظام ActivityNotFoundException.

هذه السمة ليست الطريقة الوحيدة لتقييد تعرض النشاط للتطبيقات الأخرى. تُستخدم الأذونات أيضًا لتحديد الكيانات الخارجية التي يمكنها استدعاء النشاط. اطّلِع على السمة permission.

android:finishOnTaskLaunch
ما إذا كان سيتم إيقاف مثيل حالي للنشاط، باستثناء النشاط الجذر، عندما يعيد المستخدم تشغيل مهمته عن طريق اختيار المهمة على الشاشة الرئيسية. الساعة "true" إذا تم إيقافها، و"false" إذا لم يتم إيقافها. القيمة التلقائية هي "false".

إذا كانت هذه السمة وallowTaskReparenting في كلتا الحالتين "true"، تسود هذه السمة على الأخرى. يتم تجاهل هذا التقارب للنشاط. لم تتم إعادة إدارة النشاط، ولكن تمت إزالته.

ويتم تجاهل هذه السمة في حال عدم ضبط السمة FLAG_ACTIVITY_RESET_TASK_IF_NEEDED.

android:hardwareAccelerated
ما إذا كان سيتم تفعيل العرض المسرّع بالأجهزة لهذا النشاط أم لا. "true" إذا تم تفعيلها، و"false" إذا لم يتم تفعيلها. القيمة التلقائية هي "false".

في نظام التشغيل Android 3.0 والإصدارات الأحدث، يتوفر عارض OpenGL الذي يسرّع الجهاز للتطبيقات لتحسين الأداء للعديد من عمليات الرسومات ثنائية الأبعاد الشائعة. عند تفعيل العارض الذي تسريعه بالأجهزة، يتم تسريع معظم العمليات في Canvas وPaint وXfermode وColorFilter وShader والكاميرا.

وينتج عن ذلك عرض صور متحركة أكثر سلاسة وتنقّل أكثر سلاسة واستجابة محسَّنة بشكل عام، حتى بالنسبة إلى التطبيقات التي لا تستخدم بشكل صريح مكتبات OpenGL الخاصة بإطار العمل. نظرًا لزيادة الموارد المطلوبة لتفعيل تسريع الأجهزة، يستهلك تطبيقك المزيد من ذاكرة الوصول العشوائي.

لا يتم تسريع جميع عمليات OpenGL 2D. إذا فعَّلت العارض المسرَّع للأجهزة، فاختبِر ما إذا كان بإمكان تطبيقك استخدام العارض بدون أخطاء.

android:icon

رمز يمثّل النشاط يظهر الرمز للمستخدمين عندما يكون تمثيل النشاط مطلوبًا على الشاشة. على سبيل المثال، يتم عرض رموز الأنشطة التي تبدأ المهام في نافذة المشغل. غالبًا ما يكون الرمز مصحوبًا بتصنيف. للحصول على معلومات عن التصنيف، راجِع السمة android:label.

يتم تعيين هذه السمة كمرجع لمورد قابل للرسم يحتوي على تعريف الصورة. إذا لم يتم تعيينه، فسيتم استخدام الأيقونة المحددة للتطبيق ككل بدلاً من ذلك. لمزيد من المعلومات، راجِع السمة icon الخاصة بعنصر <application>.

يُعد رمز النشاط أيضًا، سواء تم ضبطه هنا أو بواسطة العنصر <application>، هو الرمز التلقائي لجميع فلاتر الأهداف الخاصة بالنشاط. لمزيد من المعلومات، راجِع السمة icon في عنصر <intent-filter>.

android:immersive
يضبط إعداد الوضع المجسم للنشاط الحالي. إذا كان العنصر "true"، يكون لدى عضو ActivityInfo.flags دائمًا FLAG_IMMERSIVE مجموعة البت الخاصة به، حتى إذا تغير الوضع المجسم في وقت التشغيل باستخدام الطريقة setImmersive().
android:label

تصنيف للنشاط سهل القراءة للمستخدم. يتم عرض التسمية على الشاشة عندما يتم تمثيل النشاط للمستخدم. غالبًا ما يتم عرضه مع أيقونة النشاط. إذا لم يتم ضبط هذه السمة، سيتم بدلاً من ذلك استخدام التصنيف الذي تم ضبطه للتطبيق بالكامل. يمكنك الاطّلاع على السمة label الخاصة بعنصر <application>.

يكون تصنيف النشاط، سواء تم ضبطه هنا أو بواسطة العنصر <application>، هو أيضًا التصنيف التلقائي لجميع فلاتر الأهداف الخاصة بالنشاط. لمزيد من المعلومات، راجِع السمة label في عنصر <intent-filter>.

يتم تعيين التصنيف كمرجع لمورد سلسلة بحيث يمكن ترجمتها مثل السلاسل الأخرى في واجهة المستخدم. ومع ذلك، ولتسهيل عملية تطوير التطبيق، يمكن أيضًا ضبطه كسلسلة أولية.

android:launchMode

تعليمات حول كيفية بدء النشاط. هناك خمسة أوضاع تعمل إلى جانب علامات النشاط (FLAG_ACTIVITY_* ثابتة) في كائنات Intent لتحديد ما يحدث عند استدعاء النشاط لمعالجة هدف ما:

"standard"
"singleTop"
"singleTask"
"singleInstance"
"singleInstancePerTask"

الوضع التلقائي هو "standard".

كما هو موضّح في الجدول التالي، تنقسم الوسائط إلى مجموعتَين رئيسيتَين، الأنشطة "standard" و"singleTop" في جهة واحدة، والأنشطة "singleTask" و"singleInstance" و"singleInstancePerTask" من ناحية أخرى. يمكن إنشاء مثيل لنشاط يتضمن وضع التشغيل "standard" أو "singleTop" عدة مرات.

يمكن أن تنتمي المثيلات إلى أي مهمة ويمكن العثور عليها في أي مكان في مهمة النشاط. يتم عادةً إطلاق هذه الرموز في المهمة التي تُسمى startActivity()، إلا إذا كان الكائن Intent يحتوي على تعليمات FLAG_ACTIVITY_NEW_TASK، وفي هذه الحالة يتم اختيار مهمة مختلفة. لمزيد من المعلومات، راجِع السمة taskAffinity.

في المقابل، تختلف سلوكيات الأنشطة "singleTask" و"singleInstance" و"singleInstancePerTask". تكون السمة "singleInstancePerTask" في جذر مهمة النشاط دائمًا. ويمكن أيضًا أن يحتوي الجهاز على مثيل واحد فقط من نشاط "singleInstance" في كل مرة، بينما يمكن إنشاء مثيل لنشاط "singleInstancePerTask عدة مرات في مهام مختلفة عند ضبط FLAG_ACTIVITY_MULTIPLE_TASK أو FLAG_ACTIVITY_NEW_DOCUMENT.

ويجمع النشاط الذي يتضمّن وضع إطلاق "singleTask" بين سلوكَي "singleInstance" و"singleInstancePerTask": يمكن إنشاء مثيل للنشاط عدة مرات ويمكن العثور عليه في أي مكان في مهمة بنفس taskAffinity. يمكن للجهاز الاحتفاظ بمهمة واحدة فقط لتحديد موقع النشاط "singleTask" في جذر مهمة النشاط.

يختلف الوضعان "standard" و"singleTop" عن بعضهما البعض: ففي كل مرة يكون هناك هدف جديد لنشاط "standard"، يتم إنشاء مثيل جديد من الفئة للاستجابة لهذا الغرض. تتعامل كل نسخة افتراضية مع غرض واحد. وبالمثل، يمكن أيضًا إنشاء مثيل جديد من نشاط "singleTop" للتعامل مع هدف جديد.

أما إذا كانت المهمة الهدف تتضمّن مثيلاً حاليًا للنشاط في أعلى حزمتها، ستتلقّى هذه المثيل الغرض الجديد في استدعاء onNewIntent(). لا يتم إنشاء مثيل جديد. بخلاف ذلك، إذا كان هناك مثيل حالي لنشاط "singleTop" في المهمة المستهدَفة ولكن ليس في أعلى الحزمة أو إذا كان أعلى حزمة ولكن ليس في المهمة المستهدفة، سيتم إنشاء مثيل جديد ودفعه إلى الحزمة.

وبالمثل، إذا انتقل المستخدم إلى نشاط في الحزمة الحالية، يتم تحديد السلوك من خلال وضع إطلاق النشاط الرئيسي. إذا كان النشاط الرئيسي يتضمّن وضع الإطلاق singleTop (أو أنّ الغرض up يحتوي على FLAG_ACTIVITY_CLEAR_TOP)، يتم وضع النشاط الرئيسي في أعلى الحزمة ويتم الاحتفاظ بحالته.

يتم تلقّي الرغبة في التنقّل من خلال طريقة onNewIntent() للنشاط الرئيسي. إذا كان النشاط الرئيسي يتضمّن وضع الإطلاق standard، وإذا كان الغرض up لا يتضمّن FLAG_ACTIVITY_CLEAR_TOP، ينبثق النشاط الحالي والنشاط الرئيسي من الحزمة، ويتم إنشاء مثيل جديد للنشاط الرئيسي للحصول على القصد من التنقّل.

يختلف الوضع "singleInstance" أيضًا عن "singleTask" و"singleInstancePerTask" من ناحية واحدة فقط: فالنشاط الذي يتضمّن وضع التشغيل "singleTask" أو "singleInstancePerTask" يتيح للأنشطة الأخرى أن تكون جزءًا من المهمة "standard" و"singleTop".

من ناحية أخرى، لا يسمح نشاط "singleInstance" بأن تكون أي أنشطة أخرى جزءًا من مهمته. ويجب أن يكون هذا النشاط هو النشاط الوحيد في المهمة. وإذا بدأ النشاط نشاطًا آخر، يتم تعيين هذا النشاط لمهمة مختلفة، كما لو كان الغرض من FLAG_ACTIVITY_NEW_TASK هو تنفيذ هذا النشاط.

حالات الاستخدام وضع الإطلاق هل هناك حالات متعدّدة؟ التعليقات
عمليات الإطلاق العادية لمعظم الأنشطة "standard" نعم تلقائي: ينشئ النظام دائمًا مثيلاً جديدًا للنشاط في المهمة المستهدفة ويوجه الغرض إليها.
"singleTop" بشكل مشروط إذا كان هناك مثيل للنشاط في أعلى المهمة المستهدفة، سيوجِّه النظام الغرض إلى هذه المثيل من خلال استدعاء طريقة onNewIntent() بدلاً من إنشاء مثيل جديد للنشاط.
عمليات الإطلاق المتخصصة
(لا يُنصح به للاستخدام العام)
"singleTask" بشكل مشروط ينشئ النظام النشاط في جذر مهمة جديدة أو يحدد موقع النشاط في مهمة حالية بنفس التقارب. إذا كان مثيل النشاط متوفّرًا من قبل وكان في جذور المهمة، سيوجِّه النظام الغرض إلى المثيل الحالي من خلال استدعاء طريقة onNewIntent() بدلاً من إنشاء مثيل جديد.
"singleInstance" لا مثل "singleTask"، باستثناء أنّ النظام لا يبدأ أي أنشطة أخرى في المهمة التي تتضمّن المثيل. يكون النشاط دائمًا هو العضو الوحيد والوحيد في مهمته.
"singleInstancePerTask" بشكل مشروط لا يمكن تشغيل النشاط إلا كالنشاط الجذر للمهمة، وهو النشاط الأول الذي أدى إلى إنشاء المهمة، وبالتالي يكون هناك مثيل واحد فقط لهذا النشاط في المهمة. ومع ذلك، يمكن إنشاء مثيل للنشاط عدة مرات في مهام مختلفة.

كما هو موضّح في الجدول السابق، "standard" هو الوضع التلقائي وهو مناسب لمعظم أنواع الأنشطة. "singleTop" هو أيضًا وضع إطلاق شائع ومفيد للعديد من أنواع الأنشطة. إنّ الأوضاع الأخرى، "singleTask" و"singleInstance" و"singleInstancePerTask"، غير مناسبة لمعظم التطبيقات. ينتج عن ذلك نموذج تفاعل من المحتمل أن يكون غير مألوف للمستخدمين ويختلف جدًا عن معظم التطبيقات الأخرى.

بغض النظر عن وضع الإطلاق الذي تختاره، تأكد من اختبار قابلية استخدام النشاط أثناء الإطلاق وعند العودة إليه من الأنشطة والمهام الأخرى باستخدام زر "رجوع".

لمزيد من المعلومات حول أوضاع الإطلاق وتفاعلها مع علامات Intent، يُرجى الاطّلاع على مهام Google ومجموعة الصفحات الخلفية.

android:lockTaskMode
تحدِّد كيفية عرض النظام لهذا النشاط عندما يكون الجهاز قيد التشغيل في وضع قفل المهمة.

يمكن لنظام Android تنفيذ المهام في تجربة غامرة تشبه أسلوب Kiosk تُسمى "وضع قفل المهام". عند تشغيل النظام في وضع قفل المهمة، لا يمكن لمستخدمي الأجهزة عادةً الاطّلاع على الإشعارات أو الوصول إلى التطبيقات غير المدرَجة في القائمة المسموح بها أو الرجوع إلى الشاشة الرئيسية، إلا إذا تمت إضافة تطبيق Home إلى القائمة المسموح بها.

لا يمكن تشغيل سوى التطبيقات المُدرجة في القائمة المسموح بها من خلال وحدة التحكّم بسياسة الجهاز (DPC) عندما يكون النظام في وضع قفل المهمة. ومع ذلك، يمكن تشغيل تطبيقات النظام والتطبيقات المميزة في وضع قفل المهمة بدون إدراجها في القائمة المسموح بها.

يمكن أن تكون القيمة أيًّا من قيم سلسلة R.attr.lockTaskMode التالية:

القيمة الوصف
"normal" القيمة التلقائية. هذه هي القيمة التلقائية. لا يتم تشغيل المهام في وضع قفل المهام ولكن يمكن وضعها هناك من خلال استدعاء startLockTask().
"never"

لا يتم تشغيل "مهام Google" في وضع lockTask، ولا يمكن لمستخدم الجهاز تثبيت هذه المهام من شاشة "المهام الأخيرة".

ملاحظة: لا يتوفّر هذا الوضع إلا لتطبيقات النظام والتطبيقات المتميزة. يتم التعامل مع التطبيقات غير المميزة التي تحمل هذه القيمة على أنّها normal.

"if_whitelisted" في حال سمحت وحدة التحكّم بسياسة الجهاز بهذه الحزمة باستخدام DevicePolicyManager.setLockTaskPackages()، سيكون هذا الوضع مطابقًا لـ always، باستثناء أنّه يجب طلب النشاط stopLockTask() قبل أن يتمكّن من إنهائه إذا كانت هذه آخر مهمة مقفلة. في حال لم تسمح وحدة التحكّم بسياسة الجهاز (DPC) باستخدام هذه الحزمة، سيكون هذا الوضع متطابقًا مع normal.
"always"

يتم دائمًا تشغيل المهام المرتبطة بهذا النشاط في وضع قفل المهمة. إذا كان النظام في وضع قفل المهمة بالفعل عند تشغيل هذه المهمة، فسيتم تشغيل المهمة الجديدة أعلى المهمة الحالية. يمكن للمهام التي يتم تشغيلها في هذا الوضع الخروج من وضع قفل المهمة من خلال طلب الرقم finish().

ملاحظة: لا يتوفّر هذا الوضع إلا لتطبيقات النظام والتطبيقات المتميزة. يتم التعامل مع التطبيقات غير المميزة التي تحمل هذه القيمة على أنّها normal.

تمّ تقديم هذه السمة في المستوى 23 من واجهة برمجة التطبيقات.

android:maxRecents
الحد الأقصى لعدد المهام الأساسية في هذا النشاط في شاشة أحدث. عند الوصول إلى هذا العدد من الإدخالات، يزيل النظام النسخة الأقل استخدامًا من شاشة "العناصر الأخيرة". القيم الصالحة هي الأعداد الصحيحة من 1 إلى 50 أو من 1 إلى 25 على الأجهزة ذات الذاكرة المنخفضة. القيمة "صفر" غير صالحة. القيمة التلقائية هي 16.
android:maxAspectRatio

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

يتم التعبير عن الحد الأقصى لنسبة العرض إلى الارتفاع بالصيغة العشرية لحاصل البعد الأطول للجهاز مقسومًا على بُعده الأقصر. فعلى سبيل المثال، إذا كان الحد الأقصى لنسبة العرض إلى الارتفاع هو 7:3، فضبط قيمة هذه السمة على 2.33.

على الأجهزة غير القابلة للارتداء، يجب أن تكون قيمة هذه السمة 1.33 أو أكبر. يجب أن يكون الإصدار 1.0 أو إصدار أحدث على الأجهزة القابلة للارتداء. بخلاف ذلك، يتجاهل النظام القيمة المحددة.

ملاحظة: يتم تجاهل هذه السمة إذا تم ضبط النشاط على resizeableActivity على "صحيح"، لأنّ ذلك يعني أنّ نشاطك يتيح أي حجم.

لمزيد من المعلومات حول هذه السمة، راجِع المقالة تحديد الحد الأقصى لنسبة العرض إلى الارتفاع.

android:multiprocess
ما إذا كان يمكن إطلاق مثيل للنشاط في عملية المكون الذي بدأه. تكون القيمة "true" إذا أمكن، و"false" إذا لم يكن ذلك ممكنًا. القيمة التلقائية هي "false".

وعادةً ما يتم إطلاق مثيل جديد من النشاط في عملية التطبيق الذي حدَّده، وبالتالي يتم تشغيل جميع مثيلات النشاط في العملية نفسها. أمّا في حال ضبط هذه العلامة على "true"، فيمكن تشغيل مثيلات النشاط في عمليات متعددة، ما يسمح للنظام بإنشاء مثيلات أينما تم استخدامها، شريطة أن تسمح الأذونات بذلك، وهو أمر غير ضروري أو مرغوب فيه تقريبًا.

android:name
اسم الفئة التي تنفّذ النشاط، وهي فئة فرعية من Activity. وتكون قيمة السمة عادةً اسم فئة مؤهلة بالكامل، مثل "com.example.project.ExtracurricularActivity". ومع ذلك، كاختصار، إذا كان الحرف الأول من الاسم عبارة عن نقطة، مثل ".ExtracurricularActivity"، سيتم إلحاقه بـ مساحة الاسم المحددة في ملف build.gradle.

بعد نشر تطبيقك، لا تغيِّر هذا الاسم، ما لم تضبط android:exported="false". لا يوجد إعداد افتراضي. يجب تحديد الاسم.

android:noHistory
ما إذا تمت إزالة النشاط من حزمة الأنشطة وانتهى من خلال استدعاء الطريقة finish() عندما ينتقل المستخدم بعيدًا عنها ولا يعود مرئيًا على الشاشة. هي "true" إذا تم الانتهاء و"false" إذا لم يتم الانتهاء منها. القيمة التلقائية هي "false".

تعني القيمة "true" أنّ النشاط لا يترك أي أثر تاريخي. ولا تظل في مكدس النشاط للمهمة، لذلك لا يمكن للمستخدم العودة إليها. في هذه الحالة، لا يتم استدعاء onActivityResult() أبدًا إذا بدأت نشاطًا آخر لنتيجة هذا النشاط.

تمّ تقديم هذه السمة في المستوى 3 من واجهة برمجة التطبيقات.

android:parentActivityName
اسم فئة العنصر الرئيسي المنطقي للنشاط. ويجب أن يتطابق الاسم هنا مع اسم الفئة المحدد للسمة android:name الخاصة بعنصر <activity> المقابل.

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

لإتاحة مستويات واجهة برمجة التطبيقات من 4 إلى 16، يمكنك أيضًا تعريف النشاط الرئيسي باستخدام عنصر <meta-data> يحدد قيمة "android.support.PARENT_ACTIVITY":

<activity
    android:name="com.example.app.ChildActivity"
    android:label="@string/title_child_activity"
    android:parentActivityName="com.example.app.MainActivity" >
    <!-- Parent activity meta-data to support API level 4+ -->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.example.app.MainActivity" />
</activity>

لمزيد من المعلومات حول إعلان النشاط الرئيسي لدعم التنقل لأعلى، اقرأ توفير التنقل للأعلى.

تمّ تقديم هذه السمة في المستوى 16 من واجهة برمجة التطبيقات.

android:persistableMode

تحدد هذه السياسة كيفية الاحتفاظ بمثيل نشاط معيّن ضمن مهمة مضمّنة في جميع عمليات إعادة تشغيل الجهاز.

إذا ضبط النشاط الجذر لمهمة ما قيمة هذه السمة على persistRootOnly، سيتم الاحتفاظ بالنشاط الجذر فقط. وبخلاف ذلك، يتم فحص الأنشطة التي تكون أعلى في حزمة الظهر الخاصة بالمهمة، ويتم الاحتفاظ بأي من هذه الأنشطة التي تضبط قيمة هذه السمة على persistAcrossReboots.

إذا كنت تستخدم هذه السمة، يجب ضبط قيمتها على إحدى القيم التالية:

القيمة الوصف
persistRootOnly

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

عندما تؤدي عملية تشغيل التطبيق إلى تحميل النشاط الجذر في تطبيقك، لا يتلقّى النشاط عنصر PersistableBundle. لذلك، لا تستخدم onSaveInstanceState() للحفاظ على حالة النشاط الجذري في تطبيقك عند إعادة تشغيل الجهاز.

ملاحظة: لا تؤثّر قيمة السمة هذه في سلوك تطبيقك إلا إذا تم ضبطها على النشاط الجذر للتطبيق.

persistAcrossReboots

يتم الاحتفاظ بحالة هذا النشاط، إلى جانب حالة كل نشاط أعلى حزمة الرجوع التي تم ضبط سمة persistableMode الخاصة بها على persistAcrossReboots. إذا كان أحد الأنشطة لا يشمل السمة persistableMode التي تم ضبطها على persistAcrossReboots أو إذا تم إطلاقه باستخدام العلامة Intent.FLAG_ACTIVITY_NEW_DOCUMENT، لن يتم حفظ هذا النشاط، بالإضافة إلى كل الأنشطة في أعلى الحزمة الخلفية.

عندما يُحمِّل هدف نشاطًا تم ضبط سمة persistableMode فيه على persistAcrossReboots في تطبيقك، يتلقّى هذا النشاط كائن PersistableBundle بطريقة onCreate(). وبالتالي، يمكنك استخدام onSaveInstanceState() للحفاظ على حالة النشاط على جميع الأجهزة إذا تم ضبط سمة persistableMode فيها على persistAcrossReboots.

ملاحظة: تؤثر قيمة السمة هذه في سلوك تطبيقك حتى لو تم ضبطه على نشاط آخر غير النشاط الجذر لتطبيقك.

persistNever

لا يتم الاحتفاظ بحالة النشاط.

ملاحظة: لا تؤثّر قيمة السمة هذه في سلوك تطبيقك إلا إذا تم ضبطها على النشاط الجذر للتطبيق.

تمّ تقديم هذه السمة في المستوى 21 من واجهة برمجة التطبيقات.

android:permission
اسم الإذن الذي يجب أن يُتاح للعملاء بدء النشاط أو حمله على الاستجابة لهدف. إذا لم يتم منح المتصل startActivity() أو startActivityForResult() الإذن المحدّد، لن يتم تسليم الغرض منه إلى النشاط.

إذا لم يتم ضبط هذه السمة، يتم تطبيق الإذن الذي ضبطته السمة permission الخاصة بعنصر <application> على النشاط. في حال ضبط أيّ من السمتَين، لا يكون النشاط محميًا من خلال إذن.

للحصول على مزيد من المعلومات حول الأذونات، يُرجى الاطّلاع على قسم الأذونات في النظرة العامة على بيان التطبيق ونصائح الأمان.

android:process

اسم العملية التي يتم فيها تشغيل النشاط. عادةً، تعمل جميع مكونات التطبيق باسم عملية تلقائي تم إنشاؤه للتطبيق، ولا تحتاج إلى استخدام هذه السمة. ولكن إذا لزم الأمر، يمكنك إلغاء اسم العملية الافتراضي باستخدام هذه السمة، ما يتيح لك نشر مكونات تطبيقك عبر عمليات متعددة.

إذا كان الاسم المخصّص لهذه السمة يبدأ بنقطتين (:)، يتم إنشاء عملية جديدة خاصة بالتطبيق عند الحاجة ويتم تنفيذ النشاط خلال هذه العملية.

إذا بدأ اسم العملية بحرف صغير، سيتم تنفيذ النشاط في عملية عامة تحمل هذا الاسم، شريطة أن يكون لديك إذن بالقيام بذلك. ويتيح هذا للمكونات في التطبيقات المختلفة مشاركة العملية، مما يقلل استخدام الموارد.

يمكن للسمة process الخاصة بالعنصر <application> تحديد اسم عملية تلقائي مختلف لجميع المكوّنات.

android:relinquishTaskIdentity

ما إذا كان النشاط سيتخلى عن معرّفات المهام الخاصة به لنشاط أعلى منه في حزمة المهام. عند ضبط نشاط الجذر على "true"، يتم استبدال القاعدة الأساسية Intent بقاعدة النشاط التالي في المهمة.

وإذا تم أيضًا ضبط هذه السمة في النشاط التالي على "true"، يتم الحصول على قيمة Intent الأساسية لأي نشاط يتم تشغيله في المهمة نفسها. ويستمر ذلك لكل نشاط إلى أن يتم اكتشاف نشاط تم ضبط هذه السمة على "false" فيه. القيمة التلقائية هي "false".

إنّ هذه السمة التي تم ضبطها على "true" تسمح أيضًا باستخدام النشاط ActivityManager.TaskDescription لتغيير التصنيفات والألوان والرموز في شاشة "العناصر الأخيرة".

android:requireContentUriPermissionFromCaller

تحدّد الأذونات اللازمة لبدء هذا النشاط عند تمرير معرّفات الموارد المنتظمة (URI) للمحتوى. القيمة التلقائية هي none، أي أنّه ليس مطلوبًا الحصول على أذونات محدّدة. يؤدي ضبط هذه السمة إلى حظر استدعاء النشاط استنادًا إلى أذونات المُدّعي. في حال عدم توفُّر الأذونات المطلوبة لمرسل الدعوة، سيتم رفض بدء النشاط من خلال SecurityException .

يُرجى العِلم أنّ إجراء التنفيذ يعمل مع معرّفات الموارد المنتظمة (URI) الخاصة بالمحتوى في Intent.getData() وIntent.EXTRA_STREAM وIntent.getClipData().

قد تكون قيمة سلسلة، مع استخدام "\\;" لإلغاء أحرف مثل "\\n" أو " \\uxxxx" لحرف يونيكود.

يجب أن تكون القيمة واحدة من القيم الثابتة التالية.

ثابت القيمة الوصف
ما من علاقة 0 الإعداد التلقائي، بدون الحاجة إلى أذونات محدّدة.
قراءة 1 تسمح هذه السياسة بفرض إذن الوصول إلى معرِّفات الموارد المنتظمة (URI) للمحتوى الذي تم تمريره من أجل القراءة.
readAndWrite 4 تفرض هذه السياسة على المُرسِل الحصول على إذن بالوصول للقراءة والكتابة إلى معرّفات الموارد المنتظمة (URI) للمحتوى التي تم تمريرها.
readOrWrite 3 تفرض على المُدعي الحصول على إذن بقراءة معرّفات الموارد المنتظمة (URI) للمحتوى التي تم تمريرها أو كتابتها.
كتابة 2 يتم فرض منح إذن الوصول للكتابة إلى معرّفات الموارد المنتظمة (URI) للمحتوى التي تم تمريرها.
android:resizeableActivity

تحدِّد هذه السياسة ما إذا كان التطبيق يتيح وضع النوافذ المتعددة. يمكنك ضبط هذه السمة في العنصر <activity> أو العنصر <application>.

في حال ضبط هذه السمة على "true"، سيتمكّن المستخدم من بدء النشاط في وضع تقسيم الشاشة ووضع التصميم الحر. في حال ضبط السمة على "false"، لا يمكن اختبار التطبيق أو تحسينه ليناسب بيئة متعددة النوافذ. وسيظل بإمكان النظام وضع النشاط في وضع النوافذ المتعددة مع تطبيق وضع التوافق.

إنّ ضبط هذه السمة على "false" لا يضمن عدم ظهور تطبيقات أخرى على الشاشة في وضع النوافذ المتعددة، مثل ميزة "نافذة ضمن النافذة" أو على شاشات أخرى. لذلك، لا يعني ضبط هذه العلامة أنّ تطبيقك يملك إمكانية الوصول إلى الموارد الحصرية.

إذا كان تطبيقك يستهدف المستوى 24 من واجهة برمجة التطبيقات أو مستوى أعلى بدون تحديد قيمة لهذه السمة، يتم ضبط قيمة السمة تلقائيًا على "true".

إذا كان تطبيقك يستهدف المستوى 31 من واجهة برمجة التطبيقات أو مستوى أعلى، ستعمل هذه السمة بشكل مختلف على الشاشات الصغيرة والكبيرة:

  • الشاشات الكبيرة (sw >= 600dp): تتيح جميع التطبيقات وضع النوافذ المتعددة. توضّح هذه السمة ما إذا كان من الممكن تغيير حجم التطبيق، ولا تحدّد ما إذا كان التطبيق يتيح وضع النوافذ المتعددة. إذا resizeableActivity="false"، يتم ضبط التطبيق في وضع التوافق عند الضرورة للتوافق مع أبعاد العرض.
  • الشاشات الصغيرة (sw < 600dp): إذا كان resizeableActivity="true" والحد الأدنى للعرض والحد الأدنى لارتفاع النشاط ضمن متطلبات النوافذ المتعددة، يتيح التطبيق وضع النوافذ المتعددة. إذا كانت القيمة resizeableActivity="false"، لن يتيح التطبيق وضع النوافذ المتعددة بغض النظر عن الحد الأدنى لعرض النشاط وارتفاعه.

ملاحظة: يمكن للشركات المصنّعة للأجهزة إلغاء سلوك المستوى 31 من واجهة برمجة التطبيقات.

تمّت إضافة هذه السمة في المستوى 24 من واجهة برمجة التطبيقات.

ملاحظة: يتم تطبيق قيمة النشاط الجذري للمهمة على جميع الأنشطة الإضافية التي يتم إطلاقها في المهمة. أي أنّه إذا تم تغيير حجم النشاط الجذري لمهمة، سيتعامل النظام مع جميع الأنشطة الأخرى في المهمة على أنّها قابلة لتغيير الحجم. إذا تعذّر تغيير حجم النشاط الجذر، لن يكون تغيير حجم الأنشطة الأخرى في المهمة.

android:screenOrientation

اتجاه النشاط على شاشة الجهاز

في الإصدار Android 7.0 (مستوى واجهة برمجة التطبيقات 24) والإصدارات الأحدث، يتجاهل النظام تغييرات وقت التشغيل على هذه السمة إذا كان النشاط في وضع النوافذ المتعددة.

في نظام التشغيل Android 12 (المستوى 31 لواجهة برمجة التطبيقات) والإصدارات الأحدث، يمكن للشركات المصنّعة للأجهزة ضبط شاشات أجهزة فردية (مثل شاشة حجم الجهاز اللوحي لشاشة قابلة للطي) من أجل تجاهل مواصفات الاتجاه، وفرض أن يكون التطبيق في الوضع العمودي فقط في الوضع العمودي ومُعدًّا للعرض في وضع عمودي على الشاشات الأفقية، ما يضمن أن يظل للتطبيق نسبة عرض إلى ارتفاع عمودية ويوجّه التطبيق لسهولة الاستخدام بشكل أفضل.

يمكن أن تكون القيمة أيًّا من السلاسل التالية:

"unspecified" القيمة التلقائية. يختار النظام الاتجاه. وقد تختلف السياسة التي تستخدمها، وبالتالي الخيارات التي يتم تحديدها في سياقات محددة، من جهاز إلى آخر.
"behind" تمثّل هذه السمة الاتجاه نفسه الخاص بالنشاط أسفله مباشرةً في حزمة الأنشطة.
"landscape" اتجاه أفقي (عرض الشاشة أكبر من طولها)
"portrait" الاتجاه العمودي (تكون الشاشة أطول من عرضها)
"reverseLandscape" الاتجاه الأفقي في الاتجاه المقابل من الوضع الأفقي العادي. تمّت إضافتها في المستوى 9 من واجهة برمجة التطبيقات
"reversePortrait" الاتجاه الرأسي في الاتجاه المعاكس في الاتجاه الرأسي العادي. تمّت إضافتها في المستوى 9 من واجهة برمجة التطبيقات
"sensorLandscape" الاتجاه الأفقي، ولكن يمكن أن يكون أفقيًا أو عكسيًا استنادًا إلى أداة الاستشعار في الجهاز. يتم استخدام أداة الاستشعار حتى إذا كان المستخدم قد قفل الدوران المستند إلى أداة الاستشعار. تمّت إضافتها في المستوى 9 من واجهة برمجة التطبيقات
"sensorPortrait" الاتجاه الرأسي، ولكن يمكن أن يكون رأسيًا عادية أو عكسية استنادًا إلى أداة الاستشعار في الجهاز. يتم استخدام أداة الاستشعار حتى إذا كان المستخدم قد قفل الدوران المستند إلى أداة الاستشعار. ومع ذلك، بناءً على إعداد الجهاز، قد لا يُسمح بالدوران المقلوب. تمّت إضافتها في المستوى 9 من واجهة برمجة التطبيقات
"userLandscape" الاتجاه الأفقي، ولكن قد يكون أفقيًا أو عكسيًا استنادًا إلى أداة الاستشعار في الجهاز وتفضيل المستخدم تمّت إضافتها في المستوى 18 من واجهة برمجة التطبيقات
"userPortrait" الاتجاه الرأسي، ويمكن أن يكون رأسيًا عادية أو عكسية استنادًا إلى أداة استشعار الجهاز وخيار المستخدم المفضّل. ومع ذلك، بناءً على إعدادات الجهاز، قد لا يُسمح بالتدوير المقلوب. تمّت إضافتها في المستوى 18 من واجهة برمجة التطبيقات
"sensor" تحدّد أداة استشعار اتجاه الجهاز الاتجاه. يعتمد اتجاه الشاشة على طريقة حمل المستخدم للجهاز. يتغير عندما يقوم المستخدم بتدوير الجهاز. على الرغم من ذلك، لا يتم تدوير بعض الأجهزة إلى الاتجاهات الأربعة المحتملة بشكل تلقائي. لاستخدام جميع الاتجاهات الأربعة، استخدِم "fullSensor". يتم استخدام أداة الاستشعار حتى إذا كان المستخدم يقفل الدوران المستند إلى أداة الاستشعار.
"fullSensor" تحدّد أداة استشعار اتجاه الجهاز اتجاه أي من الاتجاهات الأربعة. يشبه هذا الإعداد "sensor"، إلا أنّ هذا الخيار يسمح بأي من الاتجاهات الأربعة المحتملة للشاشة بصرف النظر عمّا يتوافق معه الجهاز عادةً. على سبيل المثال، لا تستخدم بعض الأجهزة عادةً رأسية عكسية أو عكسية، ولكن هذا يتيح هذه الاتجاهات. تمّت إضافتها في المستوى 9 من واجهة برمجة التطبيقات
"nosensor" يتم تحديد الاتجاه بدون الرجوع إلى أداة استشعار الاتجاه المادي. يتم تجاهل أداة الاستشعار، وبالتالي لا يتم تدوير الشاشة بناءً على طريقة تحريك المستخدم للجهاز.
"user" الاتجاه المفضل الحالي للمستخدم.
"fullUser" إذا قفل المستخدم التدوير المستند إلى أداة الاستشعار، سيفعل ذلك user، وإلا سيتصرف تمامًا مثل fullSensor ويسمح بأي من الاتجاهات الأربعة المحتملة للشاشة. تمّت إضافتها في المستوى 18 من واجهة برمجة التطبيقات
"locked" قفل الاتجاه على تدويره الحالي، أيًا كان. تمت إضافته في المستوى 18 من واجهة برمجة التطبيقات.

ملاحظة: عندما تعلن عن إحدى القيم الأفقية أو العمودية، يعتبر ذلك مطلبًا صعبًا للاتجاه الذي يتم فيه تشغيل النشاط. تتيح القيمة التي أفصحت عنها في البيان إمكانية الفلترة حسب خدمات مثل Google Play، وبالتالي لا يتوفّر تطبيقك إلا على الأجهزة التي تتوافق مع الاتجاه الذي تطلبه أنشطتك. على سبيل المثال، إذا أفصحت عن السمة "landscape" أو "reverseLandscape" أو "sensorLandscape"، يكون تطبيقك متاحًا فقط للأجهزة التي تتيح استخدام الاتجاه الأفقي.

وضِّح أيضًا بشكلٍ صريح أنّ تطبيقك يتطلب الاتجاه العمودي أو الأفقي باستخدام عنصر <uses-feature>، مثل <uses-feature android:name="android.hardware.screen.portrait"/>. وهذا سلوك فلترة يقدّمه Google Play والخدمات الأخرى التي تتوافق معه، ولا تتحكّم المنصة نفسها في إمكانية تثبيت تطبيقك عندما يتيح الجهاز اتجاهات معيّنة فقط.

android:showForAllUsers

تحدّد هذه السمة ما إذا كان النشاط يظهر عندما يكون المستخدم الحالي للجهاز مختلفًا عن المستخدم الذي شغَّل النشاط. يمكنك ضبط هذه السمة على قيمة حرفية، مثل "true" أو "false"، أو ضبط السمة على سمة مورد أو مظهر تحتوي على قيمة منطقية.

تمّت إضافة هذه السمة في المستوى 23 من واجهة برمجة التطبيقات.

android:stateNotNeeded
ما إذا كان من الممكن إنهاء النشاط وإعادته بنجاح بدون حفظ حالته. وتكون القيمة "true" إذا كان من الممكن إعادة تشغيلها بدون الرجوع إلى حالتها السابقة، و"false" إذا كانت حالتها السابقة مطلوبة. القيمة التلقائية هي "false".

في العادة، قبل إيقاف النشاط مؤقتًا لتوفير الموارد، يتم استدعاء طريقته onSaveInstanceState(). تخزِّن هذه الطريقة الحالة الحالية للنشاط في عنصر Bundle، ويتم بعدها تمرير هذه الحالة إلى onCreate() عند إعادة تشغيل النشاط. في حال ضبط هذه السمة على "true"، قد لا يتم استدعاء الدالة onSaveInstanceState() ويتم استخدام السمة onCreate() null بدلاً من Bundle، لأنّها عند بدء النشاط لأول مرة.

ويعني إعداد "true" أنّه يمكن إعادة تشغيل النشاط بدون الاحتفاظ به. على سبيل المثال، يستخدم النشاط الذي يعرض الشاشة الرئيسية هذا الإعداد للتأكد من عدم إزالته إذا تعطل لسبب ما.

android:supportsPictureInPicture

تحدِّد هذه السياسة ما إذا كان النشاط يتيح عرض ميزة نافذة ضمن النافذة.

android:taskAffinity

المهمة التي يميل إليها النشاط. إن الأنشطة التي لها نفس التقارب من الناحية النظرية تنتمي إلى نفس المهمة، في نفس "التطبيق" من منظور المستخدم. يتم تحديد التقارب بين المهمة من خلال تقارب نشاطها الجذري.

ويحدِّد هذا التقارب شيئين: مهمة إعادة إنشاء أحد الوالدين للنشاط (راجِع السمة allowTaskReparenting) والمهمة التي تتضمن النشاط عند تشغيله باستخدام العلامة FLAG_ACTIVITY_NEW_TASK.

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

إذا لم يتم ضبط هذه السمة، سيكتسب النشاط مجموعة التقارب التي تم ضبطها للتطبيق. اطّلِع على السمة taskAffinity الخاصة بعنصر <application>. واسم التقارب التلقائي لأحد التطبيقات هو مساحة الاسم التي تم تعيينها في ملف build.gradle.

android:theme
إشارة إلى مورد نمط يحدّد موضوعًا عامًا للنشاط يؤدي ذلك إلى ضبط سياق النشاط تلقائيًا لاستخدام theme هذا وقد يؤدي أيضًا إلى "بدء" عرض صور متحركة قبل إطلاق النشاط، وذلك لمطابقة شكل النشاط بشكل أفضل.

في حال عدم ضبط هذه السمة، سيكتسب النشاط مجموعة المظاهر للتطبيق ككل، من سمة <application> العنصر theme. وإذا لم يتم ضبط هذه السمة أيضًا، يتم استخدام مظهر النظام التلقائي. لمزيد من المعلومات، يمكنك الاطّلاع على الأنماط والمظاهر.

android:uiOptions

خيارات إضافية لواجهة المستخدم لأحد الأنشطة. يجب أن تكون القيمة واحدة مما يلي.

القيمةالوصف
"none"ما مِن خيارات إضافية لواجهة المستخدم. هذا هو الخيار التلقائي.
"splitActionBarWhenNarrow"لإضافة شريط في أسفل الشاشة لعرض بنود العمل في شريط التطبيقات، والمعروف أيضًا باسم شريط الإجراءات، عند تقييده بسبب المساحة الأفقية، كما هو الحال عند استخدام الوضع "بورتريه" على هاتف محمول. بدلاً من ظهور عدد صغير من بنود العمل في شريط التطبيق أعلى الشاشة، ينقسم شريط التطبيق إلى قسم التنقل العلوي والشريط السفلي لبنود العمل. وهذا يعني توفير مساحة معقولة، ليس فقط لبنود العمل، ولكن أيضًا لعناصر التنقل والعناوين في الأعلى. ولا يتمّ تقسيم عناصر القائمة على الشريطين. فهي تظهر دائمًا معًا.

لمزيد من المعلومات حول شريط التطبيقات، اطّلِع على مقالة إضافة شريط التطبيقات.

تمّت إضافة هذه السمة في المستوى 14 من واجهة برمجة التطبيقات.

android:windowSoftInputMode
كيفية تفاعل النافذة الرئيسية للنشاط مع النافذة التي تحتوي على لوحة المفاتيح الافتراضية على الشاشة. يؤثّر إعداد هذه السمة في أمرَين:
  • ما إذا كانت لوحة المفاتيح الافتراضية مخفية أو مرئية عندما يصبح النشاط بؤرة تركيز المستخدم
  • ما إذا تم تغيير حجم النافذة الرئيسية للنشاط لتوفير مساحة للوحة المفاتيح المرنة أو تحريك محتواها لجعل التركيز الحالي مرئيًا عندما تغطي لوحة المفاتيح المرنة جزءًا من النافذة.

يجب أن يكون الإعداد إحدى القيم المدرجة في الجدول التالي، أو مجموعة من قيمة "state..." واحدة بالإضافة إلى قيمة "adjust..." واحدة. يؤدي ضبط قيم متعدّدة في أيّ من المجموعتَين، مثل قيم "state..." متعددة، إلى نتائج غير محدّدة. يتم الفصل بين القيم الفردية بشريط عمودي (|)، كما هو موضَّح في المثال التالي:

<activity android:windowSoftInputMode="stateVisible|adjustResize" ... >

وتلغي القيم المحدّدة هنا (بخلاف "stateUnspecified" و"adjustUnspecified") القيم التي تم ضبطها في المظهر.

القيمة الوصف
"stateUnspecified" لم يتم تحديد ما إذا كانت لوحة المفاتيح الافتراضية مخفية أو مرئية. ويختار النظام حالة مناسبة أو يعتمد على الإعدادات في الموضوع.

وهذا هو الإعداد التلقائي لسلوك لوحة المفاتيح الافتراضية.

"stateUnchanged" يتم الاحتفاظ بلوحة المفاتيح الافتراضية في آخر حالة كانت فيها، مرئية أو مخفية، عندما يظهر النشاط في مقدّمة الجهاز.
"stateHidden" يتم إخفاء لوحة المفاتيح الافتراضية عندما يختار المستخدم النشاط، أي عندما ينتقل المستخدم بتأكيد إلى النشاط، بدلاً من الرجوع إليه عند مغادرة نشاط آخر.
"stateAlwaysHidden" تكون لوحة المفاتيح الافتراضية دائمًا مخفية عندما تحتوي النافذة الرئيسية للنشاط على تركيز على الإدخال.
"stateVisible" تظهر لوحة المفاتيح الافتراضية عندما يختار المستخدم النشاط، أي عندما ينتقل المستخدم بالتأكيد إلى النشاط، بدلاً من الرجوع إليه عند مغادرة نشاط آخر.
"stateAlwaysVisible" تظهر لوحة المفاتيح الافتراضية عندما تتلقّى النافذة تركيز الإدخال.
"adjustUnspecified" لم يتم تحديد ما إذا كان يتم تغيير حجم النافذة الرئيسية للنشاط لتوفير مساحة للوحة المفاتيح المرنة أو محتوى "التحريك في النافذة" لإظهار التركيز الحالي على الشاشة. ويختار النظام أحد هذه الأوضاع تلقائيًا استنادًا إلى ما إذا كان محتوى النافذة يتضمّن أي طرق عرض للتنسيق يمكنها تمرير المحتوى. إذا توفّرت طريقة عرض مشابهة، يتم تغيير حجم النافذة على افتراض أنّ التمرير قد يجعل كل محتوى النافذة مرئيًا ضمن مساحة أصغر.

هذا هو الإعداد التلقائي لسلوك النافذة الرئيسية.

"adjustResize" يتم دائمًا تغيير حجم النافذة الرئيسية للنشاط لتوفير مساحة للوحة المفاتيح الافتراضية على الشاشة.
"adjustPan" لا يتم تغيير حجم النافذة الرئيسية للنشاط لتوفير مساحة للوحة المفاتيح الافتراضية. بدلاً من ذلك، يتم تحريك محتوى النافذة تلقائيًا كي لا تخفي لوحة المفاتيح التركيز الحالي ولكي يتمكّن المستخدمون دائمًا من رؤية ما يكتبونه. ومن غير المستحسن بشكل عام تغيير حجم اللوحة، لأنّ المستخدم قد يحتاج إلى إغلاق لوحة المفاتيح الافتراضية للوصول إلى الأجزاء المحجوبة من النافذة والتفاعل معها.

تمّ تقديم هذه السمة في المستوى 3 من واجهة برمجة التطبيقات.

تم تقديمها في:
المستوى 1 لواجهة برمجة التطبيقات 1 لجميع السمات باستثناء noHistory وwindowSoftInputMode، اللذين تمت إضافةهما في المستوى 3 من واجهة برمجة التطبيقات.
راجِع أيضًا:
<application>
<activity-alias>