- البنية:
<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"
. تتوفّر ميزة "وضع الشاشات المتعددة" في نظام التشغيل Android 7.0 (المستوى 24 من واجهة برمجة التطبيقات) أو الإصدارات الأحدث. android:directBootAware
ما إذا كان النشاط يراعي ميزة "التشغيل المباشر"، أي ما إذا كان يمكن تشغيله قبل أن يفتح المستخدم قفل الجهاز
ملاحظة: أثناء ميزة Direct Boot (التشغيل المباشر)، لا يمكن لأي نشاط في تطبيقك الوصول إلا إلى البيانات المخزّنة في سعة التخزين المحميّة على الجهاز.
تكون القيمة التلقائية
"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
. 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"
.في الإصدار 3.0 من نظام التشغيل Android والإصدارات الأحدث، يتوفّر لتطبيقاتك مُشغِّل رسومات 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"
لا يتم تشغيل المهام في وضع
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
العنصر<application>
. في حال عدم ضبط أيّ من السمتَين، لن يكون النشاط محميًا بأحد الأذونات.لمزيد من المعلومات عن الأذونات، يُرجى الاطّلاع على قسم الأذونات ضمن النظرة العامة على بيان التطبيق و نصائح الأمان.
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 من واجهة برمجة التطبيقات.
ملاحظة: يتم تطبيق قيمة النشاط الجذر للمهمة على جميع الأنشطة الإضافية التي يتم إطلاقها في المهمة. وهذا يعني أنّه إذا كان النشاط الجذر ل مهمة قابلاً لتغيير الحجم، سيتعامل النظام مع جميع الأنشطة الأخرى في المهمة على أنّها قابلة لتغيير الحجم. إذا لم يكن بالإمكان تغيير حجم النشاط الجذر، لن يكون بإمكانك تغيير حجم الأنشطة الأخرى في المهمة.
- الشاشات الكبيرة (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
العنصر. وفي حال عدم ضبط هذه السمة أيضًا، يتم استخدام مظهر النظام التلقائي. لمزيد من المعلومات، يُرجى الاطّلاع على الأنماط والمظاهر. 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-23 (حسب التوقيت العالمي المتفَّق عليه)
[null,null,["تاريخ التعديل الأخير: 2025-01-23 (حسب التوقيت العالمي المتفَّق عليه)"],[],[]]