- البنية:
<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 عن ذلك كي تتمكّن من عرض النشاط في بث السياق الذي يقيم في عملية أخرى.القيمة التلقائية لهذه السمة هي
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 هذا العلامة على
"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"
تغيير في رمز البلد للشبكة الجوّالة (MCC) في معرّف IMSI عندما يتم رصد شريحة SIM تعمل على تعديل رمز MCC "mnc"
تغيير في رمز شبكة الجوّال IMSI (MNC) عند اكتشاف شريحة 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
ما إذا كان النشاط متوافقًا مع ميزة "التشغيل المباشر"، أي ما إذا كان يمكن تشغيله قبل أن يفتح المستخدم قفل الجهاز
ملاحظة: أثناء ميزة Direct Boot (التشغيل المباشر)، لا يمكن لنشاط في تطبيقك الوصول إلا إلى البيانات المخزّنة في سعة التخزين المحميّة على الجهاز.
تكون القيمة التلقائية
"false"
.android:documentLaunchMode
- تُحدِّد كيفية إضافة مثيل جديد من نشاط إلى مهمة في كل مرة يتم فيها تشغيله.
تسمح هذه السمة للمستخدم بالحصول على مستندات متعددة من التطبيق نفسه
في شاشة "العناصر المستخدَمة مؤخرًا".
تحتوي هذه السمة على أربع قيم تؤدي إلى التأثيرات التالية عندما يفتح المستخدم مستندًا باستخدام التطبيق:
القيمة الوصف "intoExisting"
يبحث النظام عن مهمة يكون فيها ComponentName
وعنوان URL للبيانات لهدفها الأساسي مطابقَين لهما في هدف الإطلاق. إذا عثر النظام على مثل هذه المهمة، يُلغي النظام مهمة ويعيد تشغيله، مع تلقّي النشاط الجذر طلبًا لمحاولة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"
، يتم تعريف activity باستخدامlaunchMode="standard"
. في حال عدم تحديد هذه السمة، يتم استخدامdocumentLaunchMode="none"
. android:enabled
- ما إذا كان بإمكان النظام إنشاء مثيل للنشاط. يكون الرمز
"true"
إذا كان ذلك ممكنًا، و"false"
إذا لم يكن كذلك. القيمة التلقائية هي"true"
.يحتوي عنصر
<application>
على سمةenabled
خاصة به تنطبق على جميع مكوّنات التطبيق، بما في ذلك الأنشطة. يجب أن تكون قيمة كل من السمتَين<application>
و<activity>
هي"true"
، لأنّه يتم ضبطهما تلقائيًا على هذا النحو، لكي يتمكّن النظام من إنشاء مثيل للنشاط. إذا كان أيّ من"false"
، لا يمكن إنشاء مثيل له. android:enableOnBackInvokedCallback
- تتيح لك هذه العلامة تفعيل الرسومات المتحرّكة للنظام التوقّعي على مستوى النشاط. يسهّل هذا السلوك نقل التطبيقات الكبيرة التي تتضمّن أنشطة متعددة إلى الإيماءات التوقّعية للرجوع.
يؤدي ضبط القيمة
android:enableOnBackInvokedCallback=false
إلى إيقاف الرسوم المتحرّكة التوقّعية للرجوع على مستوى النشاط أو على مستوى التطبيق، بناءً على مكان ضبط العلامة، ويوجّه النظام إلى تجاهل طلبات البيانات إلى واجهة برمجة التطبيقات لمنصّةOnBackInvokedCallback
. 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 وCamera.
ويؤدي ذلك إلى ظهور صور متحركة أكثر سلاسة وإمكانية الانتقال للأعلى أو للأسفل بسلاسة وتحسين سرعة الأداء بشكل عام، حتى في التطبيقات التي لا تستخدم بشكل صريح مكتبات 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"
من حيث أنّه يسمح للأنشطة الأخرى، والتي تكون بالضرورة من النوعَين"standard"
و"singleTop"
، بأن تكون جزءًا من مهمته."singleTask"
"singleInstancePerTask"
في المقابل، لا يسمح نشاط
"singleInstance"
بأي أنشطة أخرى لتكون جزءًا من مهمته. يجب أن يكون النشاط الوحيد في المهمة. وإذا بدأ نشاطًا آخر، يتم تعيين هذا النشاط لمهمة مختلفة، كما هو الحال إذا كانFLAG_ACTIVITY_NEW_TASK
مضمّنًا في النية.حالات الاستخدام وضع الإطلاق هل هناك عدة نُسخ من التطبيق؟ التعليقات عمليات الإطلاق العادية لمعظم الأنشطة "standard"
نعم تلقائي: ينشئ النظام دائمًا مثيلًا جديدًا للنشاط في المهمة المستهدَفة ويوجّه النية إليه. "singleTop"
بشكل مشروط إذا كان هناك مثيل للنشاط في أعلى المهمة المستهدَفة، يوجّه النظام النية إلى هذا المثيل من خلال طلب إلى طريقة onNewIntent()
، بدلاً من إنشاء مثيل جديد للنشاط.عمليات الإطلاق المخصّصة
(لا يُنصَح بها للاستخدام العام)"singleTask"
بشكل مشروط ينشئ النظام النشاط في جذر مهمة جديدة أو يحدّد موقع النشاط في مهمة حالية ذات الصلة نفسها. إذا كان هناك مثيل للنشاط متوفّرًا في الجذر في المهمة، يوجّه النظام النيّة إلى المثيل الحالي من خلال طلب onNewIntent()
، بدلاً من إنشاء مثيل جديد."singleInstance"
لا يشبه "singleTask"
، باستثناء أنّ النظام لا يطلق أي أنشطة أخرى في المهمة التي تحتوي على المثيل. يكون النشاط دائمًا هو العضو الوحيد في مهمته."singleInstancePerTask"
بشكل مشروط لا يمكن تنفيذ النشاط إلا كنشاط الجذر للمهمة، وهو أول نشاط أنشأ المهمة، وبالتالي لا يتوفّر سوى مثيل واحد لهذا النشاط في المهمة. ومع ذلك، يمكن إنشاء مثيل للنشاط عدة مرات في مهام مختلفة. كما هو موضّح في الجدول السابق،
"standard"
هو الوضع التلقائي وهو مناسب لمعظم أنواع الأنشطة."singleTop"
هو أيضًا وضع تشغيل شائع ومفيد للعديد من أنواع الأنشطة. أما الأوضاع الأخرى، وهي"singleTask"
و"singleInstance"
و"singleInstancePerTask"
، فهي غير مناسبة لمعظم التطبيقات. وتؤدي هذه التطبيقات إلى نموذج تفاعل من المرجّح أن يكون غير مألوف للمستخدمين ويختلف كثيرًا عن معظم التطبيقات الأخرى.بغض النظر عن وضع التشغيل الذي تختاره، احرص على اختبار قابلية استخدام النشاط أثناء التشغيل وعند الرجوع إليه من الأنشطة والمهام الأخرى باستخدام زر الرجوع.
لمزيد من المعلومات عن أوضاع الإطلاق وتفاعلها مع
Intent
المَعلمات، اطّلِع على مهام Google ومجموعة التطبيقات التي تم تشغيلها سابقًا.android:lockTaskMode
- يحدِّد هذا الخيار كيفية عرض النظام لهذا النشاط عندما يكون الجهاز يعمل في
وضع مهام القفل.
يمكن لنظام التشغيل Android تنفيذ المهام بطريقة مجسّمة تشبه وضع الكشك، ويُعرف هذا الوضع باسم "وضع قفل المهام". عندما يعمل النظام في وضع "مهام القفل"، لا يمكن لمستخدمي الجهاز عادةً الاطّلاع على الإشعارات أو الوصول إلى التطبيقات غير المدرَجة في القائمة المسموح بها أو العودة إلى الشاشة الرئيسية، ما لم يكن تطبيق "المنزل" مدرَجًا في القائمة المسموح بها.
لا يمكن تشغيل سوى التطبيقات المُدرَجة في القائمة المسموح بها من خلال وحدة التحكّم في سياسة الجهاز (DPC) عندما يكون النظام في وضع "مهام القفل". ومع ذلك، يمكن تشغيل تطبيقات النظام والتطبيقات المزوّدة بامتيازات في وضع "مهام القفل" بدون إدراجها في القائمة المسموح بها.
يمكن أن تكون القيمة أيًّا ممّا يلي
R.attr.lockTaskMode
من قيم السلاسل:القيمة الوصف "normal"
القيمة التلقائية: هذه هي القيمة التلقائية. لا يتم تشغيل المهام في وضع قفل المهام، ولكن يمكن وضعها فيه من خلال استدعاء startLockTask()
."never"
لا يتم تشغيل "مهام Google" في وضع
lockTask
، ولا يمكن لمستخدم الجهاز تثبيت هذه المهام من شاشة "المهام الأخيرة".ملاحظة: لا يتوفّر هذا الوضع إلا للتطبيقات الخاصة بالنظام والتطبيقات المميّزة. يتم التعامل مع التطبيقات غير المميّزة التي تحمل هذه القيمة على أنّها
normal
."if_whitelisted"
إذا فوَّض "المسؤول عن إدارة البيانات الشخصية" هذه الحزمة باستخدام DevicePolicyManager.setLockTaskPackages()
، فسيكون هذا الوضع مطابقًاalways
، باستثناء أنّ النشاط يحتاج إلى استدعاءstopLockTask()
قبل أن يتمهّل إنهاءه إذا كانت آخر مهمة مقفلة. إذا لم يفوِّض "المسؤول عن إدارة البيانات الشخصية" هذه الحزمة، سيكون هذا الوضع مطابقًا للوضع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"
، يتم إلحاقها بالملف namespace المحدّد فيملفbuild.gradle
.بعد نشر تطبيقك، لا تُغيّر هذا الاسم، ما لم تضبط
android:exported="false"
. لا يتوفّر خيار تلقائي. يجب تحديد الاسم. android:noHistory
- ما إذا كان سيتم إزالة النشاط من حزمة الأنشطة و
إنهائه، من خلال استدعاء
finish()
الطريقة، عندما ينتقل المستخدم بعيدًا عنه ولم يعُد مرئيًا على الشاشة يكون"true"
إذا كان قد اكتمل، و"false"
إذا لم يكن كذلك. تكون القيمة التلقائية"false"
.تعني القيمة
"true"
أنّ النشاط لا يترك أثرًا في السجلّ. ولا يبقى في حزمة الأنشطة للمهمة، لذا لا يمكن للمستخدم الرجوع إليه. في هذه الحالة، لن يتم أبدًا استدعاءonActivityResult()
إذا بدأت نشاطًا آخر للحصول على نتيجة من هذا النشاط.تمّ تقديم هذه السمة في المستوى 3 من واجهة برمجة التطبيقات.
android:parentActivityName
- اسم فئة العنصر الرئيسي المنطقي للنشاط. يجب أن يتطابق الاسم هنا مع اسم
الفئة الذي تمّ منحه لسمة
android:name
العنصر<activity>
المقابل.يقرأ النظام هذه السمة لتحديد النشاط الذي سيتم بدؤه عندما يضغط المستخدم على الزر Up (أعلى) في شريط الإجراءات. يمكن للنظام أيضًا استخدام هذه المعلومات لجمع الأنشطة السابقة مع
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()
الإذن المحدّد، لن يتم إرسال نية الاتصال إلى النشاط.في حال عدم ضبط هذه السمة، ينطبق على النشاط الإذن الذي تم ضبطه من خلال سمة
<application>
سمةpermission
العنصر. في حال عدم ضبط أيّ من السمتَين، لن يكون النشاط محميًا بأحد الأذونات.لمزيد من المعلومات عن الأذونات، يُرجى الاطّلاع على القسم الأذونات ضمن النظرة العامة على بيان التطبيق و نصائح الأمان.
android:process
اسم العملية التي يتم فيها تنفيذ النشاط في العادة، يتم تشغيل كل مكوّنات التطبيق باسم عملية تلقائي تم إنشاؤه للتطبيق، ولا تحتاج إلى استخدام هذه السمة. ولكن إذا لزم الأمر، يمكنك إلغاء اسم العملية التلقائي باستخدام هذه السمة، ما يتيح لك توزيع مكونات تطبيقك على عمليات متعددة.
إذا كان الاسم الذي تمّ تعيينه لهذه السمة يبدأ بنقطتَين رأسيتَين (
:
)، يتمّ إنشاء عملية جديدة خاصة بالتطبيق عند الحاجة إليها، ويتم تنفيذ الإجراء في هذه العملية.إذا كان اسم العملية يبدأ بحرف صغير، يتم تنفيذ النشاط في عملية عامة بهذا الاسم، شرط أن يكون لديه الإذن بذلك. يتيح ذلك للمكونات في التطبيقات المختلفة مشاركة عملية، ما يقلل من استخدام الموارد.
يمكن أن تضبط سمة
process
عنصر<application>
اسم عملية تلقائيًا مختلفًا لجميع المكوّنات.android:relinquishTaskIdentity
ما إذا كان النشاط يتخلّص من معرّفات المهام إلى نشاط أعلى منه في تدرّج المهام إذا كانت السمة "
"true"
" محدّدة للنشاط الجذر في إحدى المهام، يتم استبدال القاعدةIntent
بالنشاط التالي في المهمة.إذا تم ضبط هذه السمة في النشاط التالي أيضًا على
"true"
، سيؤدي ذلك إلى منح القاعدةIntent
لأي نشاط يتم تشغيله في مهمة المعينة نفسها. ويستمر ذلك لكل نشاط إلى أن يتم العثور على نشاط تم ضبط هذه السمة فيه على"false"
. تكون القيمة التلقائية"false"
.تسمح هذه السمة التي تم ضبطها على
"true"
أيضًا للنشاط باستخدامActivityManager.TaskDescription
لتغيير التصنيفات والألوان والرموز في شاشة "العناصر الأخيرة".android:requireContentUriPermissionFromCaller
-
تُحدِّد الأذونات اللازمة لبدء هذا النشاط عند تمرير معرّفات الموارد المنتظمة للمحتوى. القيمة التلقائية هي
none
، ما يعني أنّه ليس مطلوبًا منح أي أذونات معيّنة. يؤدي ضبط هذه السمة إلى حظر استدعاء النشاط استنادًا إلى أذونات المُستدعي. إذا لم يكن لدى المُستدعي الأذونات المطلوبة، سيتم رفض بدء النشاط من خلالSecurityException
.يُرجى العِلم أنّ عملية التنفيذ تعمل مع معرّفات الموارد المنتظمة للمحتوى في
Intent.getData()
،Intent.EXTRA_STREAM
، وIntent.getClipData()
.يمكن أن تكون قيمة سلسلة، باستخدام '\\' لإلغاء ترميز الأحرف، مثل '\\n' أو '\\uxxxx' لحرف يونيكود.
يجب أن تكون إحدى القيم الثابتة التالية.
ثابت القيمة الوصف لا شيء 0 الإعداد التلقائي، ولا يلزم توفُّر أذونات محدّدة. قراءة 1 يفرض على المُستخدِم الحصول على إذن بالقراءة لمعرّفات الموارد المنتظمة للمحتوى التي تم تمريرها. readAndWrite 4 يفرض هذا الإجراء على المُستخدِم الحصول على إذن بالقراءة والكتابة لمعرّفات الموارد المنتظمة للمحتوى التي تم تمريرها. readOrWrite 3 يفرض على المُستخدِم الحصول على إذن بالقراءة أو الكتابة لمعرّفات الموارد المنتظمة للمحتوى التي تم تمريرها. في الكتابة 2 يفرض هذا الإجراء على المُستخدِم الحصول على إذن بالكتابة في معرّفات الموارد المنتظمة للمحتوى التي تم تمريرها. android:resizeableActivity
-
يحدِّد ما إذا كان التطبيق متوافقًا مع وضع النوافذ المتعددة. يمكنك ضبط هذه السمة في عنصر
<activity>
أو<application>
.في حال ضبط هذه السمة على
"true"
، يمكن للمستخدم بدء النشاط في وضعَي "تقسيم الشاشة" و"الشكل الحر". في حال ضبط السمة على"false"
، لا يمكن اختبار التطبيق أو تحسينه لبيئة متعددة النوافذ. يمكن للنظام أن يستمر في عرض النشاط في وضع النوافذ المتعددة مع تطبيق وضع التوافق.لا يضمن ضبط هذه السمة على
"false"
عدم ظهور تطبيقات أخرى في وضع "تعدد النوافذ" على الشاشة، مثل وضع "نافذة ضمن نافذة"، أو على شاشات أخرى. وبالتالي، لا يعني ضبط هذا الإعداد أنّ تطبيقك لديه إذن وصول حصري إلى الموارد.إذا كان تطبيقك يستهدف المستوى 24 من واجهة برمجة التطبيقات أو إصدارًا أحدث ولم تحدِّد قيمة لهذه السمة، سيتم ضبط قيمة السمة تلقائيًا على
"true"
.إذا كان تطبيقك يستهدف المستوى 31 من واجهة برمجة التطبيقات أو أعلى، تعمل هذه السمة بشكل مختلف على الشاشات الصغيرة والكبيرة:
- الشاشات الكبيرة (sw >= 600dp): تتيح جميع التطبيقات وضع "تعدد النوافذ". تشير السمة إلى
ما إذا كان بإمكان المستخدم تغيير حجم التطبيق، وليس ما إذا كان التطبيق متوافقًا مع وضع "النوافذ المتعددة". إذا كانت القيمة هي
resizeableActivity="false"
، يتم وضع التطبيق في وضع التوافق عند الضرورة لتلبية متطلبات أبعاد الشاشة. - الشاشات الصغيرة (sw < 600dp): إذا كان
resizeableActivity="true"
والحد الأدنى لعرض النشاط وحد أدنى لارتفاعه ضمن متطلبات وضع "النوافذ المتعددة"، يتوافق التطبيق مع وضع "النوافذ المتعددة". إذا كانresizeableActivity="false"
، لا يسمح التطبيق باستخدام وضع "النوافذ المتعددة" بغض النظر عن الحد الأدنى للعرض والارتفاع للنشاط.
ملاحظة: يمكن لصنّاع الأجهزة إلغاء سلوك مستوى واجهة برمجة التطبيقات 31.
تمت إضافة هذه السمة في مستوى واجهة برمجة التطبيقات 24.
ملاحظة: يتم تطبيق قيمة النشاط الجذر للمهمة على جميع الأنشطة الإضافية التي يتم إطلاقها في المهمة. وهذا يعني أنّه إذا كان النشاط الجذر ل tâche قابلة للتغيير، يتعامل النظام مع جميع الأنشطة الأخرى في tâche على أنّها قابلة للتغيير. إذا لم يكن بالإمكان تغيير حجم النشاط الجذر، لن يكون بالإمكان تغيير حجم الأنشطة الأخرى في المهمة.
- الشاشات الكبيرة (sw >= 600dp): تتيح جميع التطبيقات وضع "تعدد النوافذ". تشير السمة إلى
ما إذا كان بإمكان المستخدم تغيير حجم التطبيق، وليس ما إذا كان التطبيق متوافقًا مع وضع "النوافذ المتعددة". إذا كانت القيمة هي
android:screenOrientation
الاتجاه المطلوب للنشاط
عندما يملؤ النشاط الشاشة بأكملها، يعمل الاتجاه المطلوب كاقتراح ل تغيير الاتجاه على تلك الشاشة لمطابقة القيمة المطلوبة. ويمكن أن يؤدي ذلك إلى توجيه مختلف عن الاتجاه المادي للشاشة في الفضاء، ما يتطلّب من المستخدم تدوير الجهاز لمواصلة استخدام التطبيق. في الإصدار 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
العنصر<application>
. وفي حال عدم ضبط هذه السمة أيضًا، يتم استخدام مظهر النظام التلقائي. لمزيد من المعلومات، اطّلِع على الأنماط والمظاهر. 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"
لا يتم تغيير حجم النافذة الرئيسية للنشاط لإفساح المجال للوحه المفاتيح. بدلاً من ذلك، يتم تلقائيًا تمرير محتوى النافذة لكي لا تحجب لوحة المفاتيح التركيز الحالي، ويمكن للمستخدمين رؤية ما يكتبونه في أي وقت. وهذا الإجراء أقل مرغوبًا فيه بشكل عام مقارنةً بتغيير حجم النافذة، لأنّ المستخدم قد يحتاج إلى إغلاق لوحة المفاتيح الافتراضية للوصول إلى الأجزاء المموّهة من النافذة والتفاعل معها. "adjustNothing"
لا يتم تغيير حجم النافذة الرئيسية للنشاط أو تغيير موضعها لإفساح المجال للوحة المفاتيح. يتحمّل النشاط مسؤولية توفير مساحة للوحه المفاتيح المتوفّرة على الشاشة باستخدام الأجزاء المضمّنة للنافذة. بالنسبة إلى الأنشطة التي تتعامل مع إدراجات النوافذ بشكل صحيح، يمنحك ذلك أكبر قدر من التحكّم في كيفية عرض محتويات النافذة على الشاشة. تمّ تقديم هذه السمة في المستوى 3 من واجهة برمجة التطبيقات.
- تمّت إتاحة هذه الميزة في:
- المستوى 1 من واجهة برمجة التطبيقات لجميع السمات باستثناء
noHistory
وwindowSoftInputMode
اللتين تمت إضافتهما في المستوى 3 من واجهة برمجة التطبيقات - راجِع أيضًا:
<application>
<activity-alias>
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-01-14 (حسب التوقيت العالمي المتفَّق عليه)
[null,null,["تاريخ التعديل الأخير: 2025-01-14 (حسب التوقيت العالمي المتفَّق عليه)"],[],[]]