- بناء الجملة:
<activity android:allowEmbedded=["true" | "false"] android:allowTaskReparenting=["true" | "false"] android:alwaysRetainTaskState=["true" | "false"] android:autoRemoveFromRecents=["true" | "false"] android:banner="drawable resource" android:canDisplayOnRemoteDevices=["true" | "false"] android:clearTaskOnLaunch=["true" | "false"] android:colorMode=[ "hdr" | "wideColorGamut"] android:configChanges=["colorMode", "density", "fontScale", "fontWeightAdjustment", "grammaticalGender", "keyboard", "keyboardHidden", "layoutDirection", "locale", "mcc", "mnc", "navigation", "orientation", "screenLayout", "screenSize", "smallestScreenSize", "touchscreen", "uiMode"] android:directBootAware=["true" | "false"] android:documentLaunchMode=["intoExisting" | "always" | "none" | "never"] android:enabled=["true" | "false"] android:enabledOnBackInvokedCallback=["true" | "false"] android:excludeFromRecents=["true" | "false"] android:exported=["true" | "false"] android:finishOnTaskLaunch=["true" | "false"] android:hardwareAccelerated=["true" | "false"] android:icon="drawable resource" android:immersive=["true" | "false"] android:label="string resource" android:launchMode=["standard" | "singleTop" | "singleTask" | "singleInstance" | "singleInstancePerTask"] android:lockTaskMode=["normal" | "never" | "if_whitelisted" | "always"] android:maxRecents="integer" android:maxAspectRatio="float" android:multiprocess=["true" | "false"] android:name="string" android:noHistory=["true" | "false"] android:parentActivityName="string" android:persistableMode=["persistRootOnly" | "persistAcrossReboots" | "persistNever"] android:permission="string" android:process="string" android:relinquishTaskIdentity=["true" | "false"] android:requireContentUriPermissionFromCaller=["none" | "read" | "readAndWrite" | "readOrWrite" | "write"] android:resizeableActivity=["true" | "false"] android:screenOrientation=["unspecified" | "behind" | "landscape" | "portrait" | "reverseLandscape" | "reversePortrait" | "sensorLandscape" | "sensorPortrait" | "userLandscape" | "userPortrait" | "sensor" | "fullSensor" | "nosensor" | "user" | "fullUser" | "locked"] android:showForAllUsers=["true" | "false"] android:stateNotNeeded=["true" | "false"] android:supportsPictureInPicture=["true" | "false"] android:taskAffinity="string" android:theme="resource or theme" android:uiOptions=["none" | "splitActionBarWhenNarrow"] android:windowSoftInputMode=["stateUnspecified", "stateUnchanged", "stateHidden", "stateAlwaysHidden", "stateVisible", "stateAlwaysVisible", "adjustUnspecified", "adjustResize", "adjustPan"] > ... </activity>
- الواردة في:
<application>
- يمكن أن يحتوي على:
<intent-filter>
<meta-data>
<layout>
- description:
- يذكر نشاطًا (فئة فرعية
Activity
) بتنفيذ جزء من الواجهة المرئية للمستخدم للتطبيق. جميع الأنشطة يجب أن يتم تمثيله بـ<activity>
. والعناصر في ملف البيان. لا تتم رؤية أي سمات لم يتم الإعلان عنها. بواسطة النظام ولا يتم تشغيلها أبدًا. - :
android:allowEmbedded
-
يشير إلى إمكانية تشغيل النشاط باعتباره عنصرًا ثانويًا مضمّنًا في جهاز آخر النشاط، لا سيما في تلك الحالة التي يعيش فيها الطفل في إحدى الحاويات، مثل
Display
يملكه نشاط آخر. على سبيل المثال، الأنشطة المُستخدمة في إشعارات Wear المخصصة توضّح ذلك بإمكان Wear عرض الأنشطة المتوفّرة في ساحة مشاركات السياق الخاصة به. في عملية أخرى.القيمة التلقائية لهذه السمة هي
false
. android:allowTaskReparenting
- ما إذا كان يمكن الانتقال من المهمة التي بدأتها إلى النشاط
بالمهمة التي يهتم بها عند نقل هذه المهمة إلى
المقدمة. درجة الحرارة هي
"true"
إذا كان يمكن نقلها، و"false"
إذا كانت قابلة للتحريك. يظل مع المهمة التي بدأت.وإذا لم يتم ضبط هذه السمة، يتم ضبط القيمة التي تحدّدها السمة
allowTaskReparenting
سمة العنصر<application>
تنطبق على النشاط. القيمة التلقائية هي"false"
.وعادة ما يتم ربط ذلك عند بدء نشاط ما بمهمة النشاط الذي بدأه ويبقى هناك طوال حياتها. يمكنك استخدام هذه السمة لفرض إعادة ربطها بالمهمة تقارب عند عدم عرض مهمته الحالية. وعادةً ما يتم استخدام هذا لنقل أنشطة التطبيق بالمهمة الرئيسية المرتبطة بهذا التطبيق.
على سبيل المثال، إذا كانت رسالة بريد إلكتروني تحتوي على رابط إلى صفحة ويب، فإن النقر فوق يؤدي الرابط إلى إظهار نشاط يمكنه عرض الصفحة. ذلك النشاط عن طريق تطبيق المتصفح ولكن يتم تشغيله كجزء من البريد الإلكتروني المهمة. وإذا تمت إعادة إظهاره لمهمة المتصفح، سيتم عرض وقت المتصفح التالي ويكون غير موجود عندما تكون مهمة البريد الإلكتروني إلى الأمام مرة أخرى.
يتم تحديد التقارب بين النشاط
taskAffinity
. الجمهور ذو الاهتمامات المشتركة المهمة من خلال قراءة مدى التقارب للنشاط الجذري لها. وبالتالي، فحسب التعريف، يكون النشاط الجذر دائمًا في مهمة ذات نفس التقارب. نظرًا لأن الأنشطة مع"singleTask"
أو لا يمكن أن تكون"singleInstance"
أوضاع تشغيل إلا في جذر المهمة، يمكن فقط الاستفادة من إعادة التربية في"standard"
و"singleTop"
. وسائل النقل. (اطّلِع أيضًا علىlaunchMode
). ). android:alwaysRetainTaskState
- ما إذا كانت حالة المهمة التي يقوم بها النشاط دائمًا
من قبل النظام.
"true"
إذا كان، و"false"
إذا كان بإمكان النظام إعادة ضبط المهمة إلى حالتها الأولى تذكره في مواقف معينة. القيمة التلقائية هي"false"
. هذا النمط لها معنى فقط للنشاط الجذر لمهمة ما. تم تجاهله لجميع الأنشطة الأخرى.عادةً ما يمحو النظام المهمة ويزيل جميع الأنشطة من الحزمة أعلى من النشاط الجذر، في بعض الحالات عندما يعيد المستخدم اختيار مهمة من الشاشة الرئيسية. وعادةً ما يتم ذلك إذا لم يزر المستخدم المهمة لفترة زمنية معينة، مثل 30 دقيقة.
ولكن عندما تكون هذه السمة
"true"
، يعرض المستخدمون دائمًا بالمهمة في حالتها الأخيرة، بغض النظر عن كيفية الوصول إليها. هذا هو أن يكون مفيدًا في تطبيق مثل متصفح الويب حيث الكثير من الحالات، مثل العديد من علامات التبويب المفتوحة، التي لا يرغب المستخدمون في فقدانها. android:autoRemoveFromRecents
- ما إذا كانت المهام التي تم تشغيلها من خلال النشاط باستخدام هذه السمة ستظل في
شاشة أحدث المكالمات حتى آخر نشاط في
تكتمل المهمة. إذا كانت
true
، تكون المهمة تلقائيًا من شاشة "الأخيرة". يلغي هذا استخدام المتصلFLAG_ACTIVITY_RETAIN_IN_RECENTS
يجب أن تكون قيمة منطقية، إما"true"
أو"false"
android:banner
- مورد قابل للرسم
يقدم بانر رسومي موسَّع للعنصر المرتبط به. الاستخدام مع
<activity>
لتقديم بانر تلقائي لنشاط معيّن أو مع<application>
لتقديم بانر لجميع أنشطة التطبيق.يستخدم النظام البانر لتمثيل تطبيق في شاشة Android TV الرئيسية. ونظرًا لعرض البانر على الشاشة الرئيسية فقط، يتم تحديدها فقط من خلال التطبيقات التي لديها نشاط يعالج هدف واحد (
CATEGORY_LEANBACK_LAUNCHER
).يتم تعيين هذه السمة كمرجع لمورد قابل للرسم يحتوي على الصورة، مثل
"@drawable/banner"
. لا يوجد بانر تلقائي.لمزيد من المعلومات، يُرجى مراجعة توفير بانر للشاشة الرئيسية في صفحة "بدء استخدام تطبيقات التلفزيون"
android:canDisplayOnRemoteDevices
-
يشير إلى ما إذا كان يمكن عرض النشاط على جهاز بعيد أن يعمل أو لا يعمل بنظام Android. يجب أن تكون قيمة منطقية، إما
"true"
أو"false"
القيمة التلقائية لهذه السمة هي
"true"
. android:clearTaskOnLaunch
- ما إذا تمت إزالة جميع الأنشطة من المهمة، باستثناء
نشاط الجذر، عند إعادة تشغيله من الشاشة الرئيسية.
"true"
إذا كانت المهمة تتم إزالتها إلى النشاط الجذر دائمًا،"false"
إذا لم يكن كذلك. القيمة التلقائية هي"false"
. هذه السمة يكون مفيدًا فقط للأنشطة التي تبدأ مهمة جديدة - النشاط الجذري. ويتم تجاهله في جميع الأنشطة الأخرى في المهمة.عندما تكون القيمة
"true"
، في كل مرة يبدأ فيها المستخدمون المهمة، يمكنهم يتم جلبهم إلى النشاط الأساسي بغض النظر عن آخر مرة قاموا به في المهمة وبغض النظر عما إذا كانوا قد استخدموا زر "الرجوع" أو "الصفحة الرئيسية" وتركه. عندما تكون القيمة"false"
، يمكن محو المهمة من الأنشطة في بعض المواقف، ولكن ليس دائمًا. لمزيد من المعلومات، يُرجى الاطّلاع علىalwaysRetainTaskState
.لنفترض أن المستخدم يشغِّل النشاط "ب" من الشاشة الرئيسية، ومن هناك ينتقل إلى النشاط س. ينقر المستخدم في المرة التالية على "الصفحة الرئيسية"، ثم يعود إلى النشاط P. وعادةً ما يرى المستخدم النشاط "س"، نظرًا لأن هذا هو آخر ما يقومون به في مهمة P. في المقابل، إذا ضبطت P هذه العلامة على
"true"
، سيتم الأنشطة فوقها - وهي في هذه الحالة، Q - تتم إزالتها عند تشغيل المستخدم النشاط "ب" من الشاشة الرئيسية. لذلك، يرى المستخدم P فقط عند العودة إلى المهمة.إذا كانت هذه السمة و
allowTaskReparenting
كلا نوعيهما"true"
، وبالتالي يتم نقل أي أنشطة يمكن إعادة رقابة الأهل إليها المهمة التي تشترك معها في تقارب. ويتم بعد ذلك تجاهل الأنشطة المتبقية.ويتم تجاهل هذه السمة في حال عدم ضبط السمة
FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
. android:colorMode
تُحدِّد وضع الألوان للنشاط. إذا تم تحديده، يمكن أن يكون إما
hdr
أوwideColorGamut
إذا كانت
hdr
، تطلب عرض النشاط في نطاق عالي الديناميكية إذا الجهاز يدعم ذلك.إذا كانت
wideColorGamut
، تطلب عرض النشاط في وضع مجموعة ألوان واسعة على الأجهزة المتوافقة. في وضع مجموعة الألوان الواسعة، يمكن أن يتم عرض نافذة خارج نطاقSRGB
إلى تعرض ألوانًا أكثر حيوية. إذا كان الجهاز لا يتيح عرض مجموعة الألوان الواسعة ليس له أي تأثير. لمزيد من المعلومات حول العرض في وضع الألوان العريضة، يمكنك الاطّلاع على تحسين الرسومات باستخدام محتوى ألوان واسعةandroid:configChanges
- يتمّ تغيير إعدادات إعداد القوائم التي يعالجها النشاط بنفسه. عند تهيئة
يحدث أي تغيير في وقت التشغيل، يتوقّف النشاط ويعيد تشغيله افتراضيًا، ولكن
باستخدام هذه السمة إلى منع إعادة تشغيل النشاط. بدلاً من ذلك،
يظل النشاط قيد التشغيل ويتم استدعاء طريقة
onConfigurationChanged()
.ملاحظة: استخدِم هذه السمة في حالات خاصة فقط لتحسين التطبيق. الأداء والاستجابة. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة التعامل مع التغييرات في الإعدادات.
السلاسل التالية هي قيم صالحة لهذه السمة. القيم المتعددة مفصولة بفواصل
|
، مثل"locale|navigation|orientation"
.القيمة الوصف "colorMode"
تغيرت إمكانات وضع الألوان للشاشة (سلسلة الألوان أو النطاق الديناميكي).
ملاحظة: يختلف وضع اللون الذي يطلبه النشاط باستخدام السمة
colorMode
أو في وقت التشغيل عن إمكانية أوضاع الألوان المختلفة. لا يؤدي تغيير وضع الألوان الذي تستخدمه إلى تغيير في التهيئة، لأن إمكانات الألوان للشاشة لم تتغير."density"
يشير هذا المصطلح إلى تغيير في كثافة العرض، مثلاً عندما يحدّد المستخدم تم تفعيل مقياس عرض مختلف أو شاشة عرض مختلفة.
تمّت الإضافة في المستوى 24 من واجهة برمجة التطبيقات
"fontScale"
تغيير في عامل تغيير حجم الخط، مثلاً عندما يحدد المستخدم بحجم خط عمومي جديد. "fontWeightAdjustment"
تم تغيير مقدار زيادة عرض الخط. "grammaticalGender"
تم تغيير الجنس النحوي للغة. عرض GrammaticalInflectionManager
تمّت الإضافة في المستوى 34 من واجهة برمجة التطبيقات
"keyboard"
تغيير في نوع لوحة المفاتيح، على سبيل المثال عندما يستخدم المستخدم لوحة مفاتيح خارجية. "keyboardHidden"
تغيير في إمكانية الوصول إلى لوحة المفاتيح، كما هو الحال عند يكشف المستخدم عن لوحة مفاتيح الجهاز. "layoutDirection"
تغيير اتجاه التخطيط، مثل من من اليسار إلى اليمين (LTR) إلى اليمين إلى اليسار (RTL).
تمّت الإضافة في المستوى 17 من واجهة برمجة التطبيقات
"locale"
تغيير اللغة، كما هو الحال عندما يختار المستخدم لغة اللغة التي يظهر بها النص. "mcc"
أي تغيير في رمز البلد لرقم الجوّال في IMSI عندما تم اكتشاف شريحة SIM تعمل على تحديث حساب "مركز عملائي". "mnc"
تغيير في رمز شبكة الجوّال للرقم الدولي للمشترك في خدمات الجوّال (IMSI) عند تم رصد شريحة SIM تُحدِّث MNC. "navigation"
يتم تغيير TA إلى نوع التنقل (كرة التتبع أو لوحة التحكم). في العادة، لا يحدث هذا الأمر. "orientation"
تغيير في اتجاه الشاشة، على سبيل المثال عند تدوير المستخدم للجهاز.
ملاحظة: إذا كان تطبيقك يستهدف الإصدار 3.2 من نظام التشغيل Android (المستوى 13 من واجهة برمجة التطبيقات) أو الإصدارات الأحدث، يجب الإفصاح أيضًا عن ضبط
"screenLayout"
و"screenSize"
بسبب تنسيق الشاشة وحجم الشاشة يمكن أن يتغير عندما الجهاز للتبديل بين الاتجاه الرأسي والأفقي."screenLayout"
تغيير في تنسيق الشاشة، مثلاً عندما يتم تفعيل شاشة عرض مختلفة "screenSize"
تغيير حجم الشاشة المتاح حاليًا
وهو ما يمثل تغييرًا في الحجم المتاح حاليًا، مقارنةً نسبة العرض إلى الارتفاع الحالية، بحيث تتغير عندما يبدِّل المستخدم بين الوضع الأفقي وعمودي.
تمّت الإضافة في المستوى 13 من واجهة برمجة التطبيقات
"smallestScreenSize"
تغيير في حجم الشاشة
يمثل هذا تغييرًا في الحجم بغض النظر عن الاتجاه، بحيث لا يتم يتغير عند تغير حجم الشاشة الفعلي، مثل التبديل إلى شاشة خارجية. يتجاوب التغيير في هذه الإعدادات مع تغيير في
smallestWidth
.تمّت الإضافة في المستوى 13 من واجهة برمجة التطبيقات
"touchscreen"
إجراء تغيير على الشاشة التي تعمل باللمس في العادة، لا يحدث هذا الأمر. "uiMode"
تغيير في وضع واجهة المستخدم، مثل عندما يضع المستخدم جهازك إلى مكتب أو إرساء السيارة أو يتغير الوضع الليلي. لمزيد من المعلومات، للحصول على معلومات حول أوضاع واجهة المستخدم المختلفة، UiModeManager
تمّت إضافتها في المستوى 8 من واجهة برمجة التطبيقات
يمكن أن تؤثر جميع تغييرات التهيئة هذه في قيم الموارد التي يراها التطبيق. لذلك، عندما
onConfigurationChanged()
يسمى، فمن الضروري عادةً إعادة استرداد جميع الموارد، بما في ذلك عرض التخطيطات والعناصر القابلة للرسم للتعامل مع التغيير بشكل صحيح.ملاحظة: لمعالجة تغييرات الضبط ذات الصلة بنوافذ متعددة، استخدِم كلاً من
"screenLayout"
و"smallestScreenSize"
. تتوفّر ميزة النوافذ المتعددة في الإصدار 7.0 من نظام التشغيل Android (المستوى 24 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث. android:directBootAware
سواء كان النشاط مع إمكانية التشغيل المباشر، أي وما إذا كان من الممكن تشغيلها قبل أن يفتح المستخدم قفل الجهاز.
ملاحظة: خلال التشغيل المباشر، وهو نشاط في يمكن لتطبيقك الدخول إلى البيانات المخزنة في حماية الجهاز
القيمة التلقائية هي
"false"
.android:documentLaunchMode
- يحدد هذا الإعداد كيفية إضافة مثيل جديد من النشاط إلى مهمة في كل مرة يتم تشغيلها.
تسمح هذه السمة للمستخدم بالحصول على مستندات متعددة من التطبيق نفسه
تظهر في شاشة الأماكن الأخيرة.
تتضمن هذه السمة أربع قيم ينتج عنها التأثيرات التالية عندما يفتح المستخدم مستندًا. مع التطبيق:
القيمة الوصف "intoExisting"
يبحث النظام عن مهمة يكون الغرض الأساسي منها هو ComponentName
ومعرّف الموارد المنتظم (URI) للبيانات. تتطابق مع أهداف الانطلاق وفي حال عثور النظام على مثل هذه المهمة، يمحو النظام ويعيد تشغيله، مع تلقي النشاط الجذر استدعاءonNewIntent(android.content.Intent)
إذا لم يعثر النظام على مثل هذه المهمة، ينشئ النظام مهمة جديدة."always"
يؤدي النشاط إلى إنشاء مهمة جديدة للمستند، حتى إذا كان المستند مفتوحًا بالفعل. تمامًا مثل إعداد كل من FLAG_ACTIVITY_NEW_DOCUMENT
وFLAG_ACTIVITY_MULTIPLE_TASK
علامة."none"
لا يؤدي النشاط إلى إنشاء مهمة جديدة للنشاط. هذه هي القيمة الافتراضية، والتي إنشاء مهمة جديدة فقط عند ضبط FLAG_ACTIVITY_NEW_TASK
تتعامل شاشة "أحدث الأماكن" مع النشاط كما هو الحال بشكل افتراضي: حيث تعرض مهمة واحدة التطبيق، الذي يستأنف من أي نشاط استدعاه المستخدم آخر مرة."never"
لا يتم إطلاق النشاط في مستند جديد حتى إذا كان الهدف يحتوي على FLAG_ACTIVITY_NEW_DOCUMENT
يؤدي ضبط هذا الإعداد إلى إلغاء السلوك منFLAG_ACTIVITY_NEW_DOCUMENT
علاماتFLAG_ACTIVITY_MULTIPLE_TASK
، إذا تم ضبط أي منها في النشاط، وتعرض شاشة "الأخيرة" مهمة واحدة للتطبيق، والتي تستأنف من أي نشاط استدعاه المستخدم آخر مرة.ملاحظة: بالنسبة إلى القيم الأخرى بخلاف
"none"
و"never"
، يتم تحديد النشاط باستخدامlaunchMode="standard"
. إذا لم يتم تحديد هذه السمة، يتم استخدامdocumentLaunchMode="none"
. android:enabled
- ما إذا كان بإمكان النظام إنشاء مثيل للنشاط. من المهم
"true"
إذا كان ذلك ممكنًا، و"false"
إذا لم يكن ممكنًا. القيمة التلقائية"true"
.<application>
عنصر يتضمَّنenabled
الخاص به التي تنطبق على جميع مكونات التطبيق، بما في ذلك الأنشطة. تشير رسالة الأشكال البيانية<application>
و<activity>
يجب أن يكون كل منهما"true"
، لأنهما كلاهما بشكل افتراضي، لكي يتمكن النظام من إنشاء مثيل للنشاط. إذا كانت إحدى هي"false"
، ولا يمكن إنشاء مثيل لها. android:enableOnBackInvokedCallback
- تتيح لك هذه العلامة تفعيل الصور المتحركة في نظام التوقّع على مستوى النشاط. هذا السلوك
تُسهّل عملية نقل بيانات التطبيقات الكبيرة المتعددة الأنشطة لتوقُّع إيماءات الرجوع التي يمكن توقُّعها.
في حال ضبط
android:enableOnBackInvokedCallback=false
، يتم إيقاف ميزة "اقتراحات". الرسوم المتحركة إما على مستوى النشاط أو على مستوى التطبيق، اعتمادًا على مكان تعيين العلامة، وتوجِّه النظام لتجاهل طلبات البيانات من واجهة برمجة تطبيقات النظام الأساسيOnBackInvokedCallback
. android:excludeFromRecents
ما إذا كان سيتم استبعاد المهمة التي بدأها هذا النشاط من شاشة "أحدث المكالمات". أي، عندما يكون هذا النشاط هو النشاط الجذر لنشاط تحدد هذه السمة ما إذا كانت المهمة ستظهر في قائمة التطبيقات المستخدمة مؤخرًا أم لا. من المهم
"true"
إذا كانت المهمة مستبعدة من القائمة"false"
إذا كانت مضمّنة. القيمة التلقائية هي"false"
.android:exported
ما إذا كان يمكن إطلاق النشاط من خلال مكونات التطبيقات:
- إذا كان
"true"
، سيتمكّن أي تطبيق من الوصول إلى النشاط، ويكون قابلاً للتشغيل وفقًا اسم الفئة. - إذا كانت السمة
"false"
، لا يمكن تشغيل النشاط إلا من خلال مكوّنات التطبيق نفسه أو التطبيقات التي لها رقم تعريف المستخدم نفسه أو مكونات النظام ذات الامتيازات نفسها. هذه هي القيمة التلقائية في حال عدم توفّر فلاتر أهداف.
إذا كان أحد الأنشطة في تطبيقك يتضمّن فلاتر الأهداف، اضبط هذا العنصر على
"true"
للسماح للتطبيقات الأخرى بتشغيله. على سبيل المثال، إذا كان النشاط هو النشاط الرئيسي من التطبيق وتتضمّنcategory
android.intent.category.LAUNCHER
إذا تم ضبط هذا العنصر على
"false"
وحاول أحد التطبيقات بدء النشاط، يطرح النظام رمزActivityNotFoundException
إنّ هذه السمة ليست الطريقة الوحيدة لفرض قيود على تعرُّض نشاط ما التطبيقات. وتُستخدم الأذونات أيضًا لتحديد الكيانات الخارجية التي استدعاء النشاط. يمكنك الاطّلاع على
permission
.- إذا كان
android:finishOnTaskLaunch
- ما إذا كان سيتم إيقاف مثيل حالي للنشاط أم لا،
باستثناء النشاط الجذر، عندما يعيد المستخدم تشغيل مهمته عن طريق اختيار المهمة على
الشاشة الرئيسية. الساعة
"true"
إذا تم إيقافها، و"false"
إن لم يكن كذلك. القيمة التلقائية هي"false"
.إذا كانت هذه السمة
allowTaskReparenting
هما"true"
، تتفوق هذه السمة على الأخرى. يتيح تقارب يتم تجاهل النشاط. لم تتم إعادة إدارة النشاط، ولكن تمت إزالته.ويتم تجاهل هذه السمة في حال عدم ضبط السمة
FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
. android:hardwareAccelerated
- ما إذا كان قد تم تفعيل العرض المسرّع بالأجهزة لهذا الغرض
الأخرى.
"true"
إذا كانت مفعَّلة، و"false"
إذا كانت مفعَّلة لا. القيمة التلقائية هي"false"
.في نظام التشغيل Android 3.0 والإصدارات الأحدث، يتم استخدام عارض OpenGL الذي يسرّع الجهاز متاحة للتطبيقات لتحسين أداء العديد من الرسومات ثنائية الأبعاد الشائعة العمليات التجارية. عند تفعيل عارض الأجهزة التي تم تسريعها، تجري معظم العمليات في Canvas وPaint وXfermode وColorFilter وShader والكاميرا.
وبذلك ستحصل على صور متحركة أكثر سلاسة وتنقّل أكثر سلاسة وتحسينًا والاستجابة بشكل عام، حتى بالنسبة للتطبيقات التي لا تستخدم بشكل صريح مكتبات OpenGL لإطار العمل. بسبب زيادة الموارد المطلوبة لتفعيل تسريع الأجهزة، سيستهلك تطبيقك ذاكرة وصول عشوائي أكبر.
لا يتم تسريع جميع عمليات OpenGL 2D. في حال تفعيل الخيار عارض الأجهزة المسرّعة، واختبار ما إذا كان تطبيقك يمكنه استخدام العارض بدون أخطاء
android:icon
رمز يمثّل النشاط يظهر الرمز للمستخدمين عند يجب تمثيل النشاط على الشاشة. على سبيل المثال، عن الأنشطة التي تبدأ المهام يتم عرضها في نافذة مشغّل التطبيقات. غالبًا ما تكون الأيقونة مصحوبة بتسمية؛ للحصول على معلومات حول التصنيف، يمكنك مراجعة السمة
android:label
.يتم تعيين هذه السمة كمرجع لمورد قابل للرسم يحتوي على تعريف الصورة. إذا لم يتم تعيينه، فسيُرمز الرمز المحدّد للتطبيق ككل بدلاً من ذلك. لمزيد من المعلومات، يُرجى الاطّلاع على
<application>
السمةicon
للعنصر.رمز النشاط، سواء تم ضبطه هنا أو بواسطة
<application>
هو أيضًا الرمز التلقائي لجميع فلاتر الأهداف الخاصة بالنشاط. لمزيد من المعلومات، يُرجى الاطّلاع على عنصر<intent-filter>
السمةicon
.android:immersive
- يضبط إعداد الوضع المجسم للنشاط الحالي. إذا كانت قيمة الحقل "
"true"
"، سيحصل العضو "ActivityInfo.flags
" دائمًا علىFLAG_IMMERSIVE
بت، حتى إذا كانت يتغير الوضع المجسم في وقت التشغيل باستخدام الطريقةsetImmersive()
. android:label
تصنيف للنشاط سهل القراءة للمستخدم. يظهر التصنيف على الشاشة عند تمثيل النشاط للمستخدم. غالبًا ما يتم عرضه مع مع رمز النشاط. وفي حال عدم ضبط هذه السمة، سيتم ضبط التصنيف للتطبيق ككل على النحو التالي: استخدامه بدلاً من ذلك. يظهر هنا العنصر
<application>
السمةlabel
.تشير هذه العلامة إلى تصنيف النشاط، سواء تم ضبطه هنا أو من خلال عنصر
<application>
، هو أيضًا التصنيف التلقائي لجميع فلاتر الأهداف في النشاط. لمزيد من المعلومات، يُرجى الاطّلاع على عنصر<intent-filter>
السمةlabel
.يتم تعيين التسمية كمرجع لمورد السلسلة بحيث يمكن ترجمتها مثل السلاسل الأخرى في واجهة المستخدم. ومع ذلك، ولتسهيل الأمر أثناء تطوير التطبيق، ويمكن أيضًا ضبطه كسلسلة أولية.
android:launchMode
تعليمات حول كيفية بدء النشاط. هناك خمسة أوضاع التي تعمل إلى جانب علامات النشاط (
FLAG_ACTIVITY_*
ثوابت) فيIntent
من العناصر لتحديد ما يحدث عند يتم استدعاء النشاط للتعامل مع هدف:"standard"
"singleTop"
"singleTask"
"singleInstance"
"singleInstancePerTask"
الوضع التلقائي هو
"standard"
.كما هو موضح في الجدول التالي، تنقسم الأوضاع إلى مجموعتين رئيسيتين، مع
"standard"
و"singleTop"
نشاط من جهة واحدة،"singleTask"
و"singleInstance"
و"singleInstancePerTask"
أنشطة على الطرف الآخر. يمكن أن يكون أحد الأنشطة وضع التشغيل"standard"
أو"singleTop"
يمكن إنشاء مثيل له عدة مرات.يمكن أن تنتمي المثيلات إلى أي مهمة ويمكن وضعها في أي مكان في مهمة النشاط. عادةً ما تكون تم إطلاقها في المهمة التي
startActivity()
، ما لم يحتوي الكائنIntent
علىFLAG_ACTIVITY_NEW_TASK
التعليمات، وفي هذه الحالة يتم اختيار مهمة مختلفة. لمزيد من المعلومات، يُرجى الاطّلاع علىtaskAffinity
.على النقيض،
"singleTask"
و"singleInstance"
و تتميّز أنشطة"singleInstancePerTask"
بسلوكيات مختلفة. تكون السمة"singleInstancePerTask"
في جذر مهمة النشاط دائمًا. كما يمكن أن يحتوي الجهاز على مثيل واحد فقط نشاط"singleInstance"
في كل مرة، في حين أن يمكن إنشاء مثيل لنشاط"singleInstancePerTask
عدة مرات في مهام مختلفة عندFLAG_ACTIVITY_MULTIPLE_TASK
أوFLAG_ACTIVITY_NEW_DOCUMENT
تم تعيينها.يتضمّن نشاط يتضمّن وضع إطلاق "
"singleTask"
" ما يلي: سلوكيات ""singleInstance"
""singleInstancePerTask"
: يمكن إنشاء مثيل للنشاط متعدد ويمكن وضعها في أي مكان في مهمة بنفسtaskAffinity
. ولكن الجهاز يمكنه حمل مهمة واحدة فقط لتحديد موقع النشاط"singleTask"
في جذر مهمة النشاط.يختلف الوضعان
"standard"
و"singleTop"
عن بعضهما. من ناحية واحدة: في كل مرة تكون هناك نية جديدة لـ"standard"
فسيتم إنشاء مثيل جديد للفئة للاستجابة لهذا الغرض. تتعامل كل نسخة افتراضية مع غرض واحد. وبالمثل، يمكن أيضًا تنفيذ مثيل جديد لنشاط"singleTop"
يتم إنشاؤه للتعامل مع هدف جديد.ومع ذلك، إذا كانت المهمة المستهدفة تحتوي بالفعل النشاط الموجود أعلى مكدسته، أي المثيل على النية الجديدة، مكالمة
onNewIntent()
. لا يتم إنشاء مثيل جديد. بخلاف ذلك—إذا كان هناك مثيل موجود نشاط ""singleTop"
" موجود في المهمة المستهدفة ولكن ليس في أعلى المكدس، أو إذا كان في أعلى المكدس، ولكن ليس في المهمة المستهدفة، فإن المثيل الجديد أنشأناه ودفعنا إلى المكدس.وبالمثل، إذا كان المستخدم تنقل نشاط أعلى في الحزمة الحالية، يتم تحديد السلوك بواسطة وضع إطلاق نشاط الوالدين. إذا كان النشاط الرئيسي يتضمّن وضع التشغيل
singleTop
(أو كان الغرض منup
يحتوي علىFLAG_ACTIVITY_CLEAR_TOP
)، يتم إحضار العنصر الرئيسي إلى أعلى المكدس، ويتم الاحتفاظ بحالتها.تم تلقي القصد من التنقل حسب
onNewIntent()
للنشاط الوالد . إذا كان وضع التشغيلstandard
مفعلاً ضمن النشاط الرئيسي لا يحتوي الغرضup
على "FLAG_ACTIVITY_CLEAR_TOP
"، والنشاط الحالي. ينبثق الأصل من الحزمة، ويتم إنشاء مثيل جديد للنشاط الرئيسي لتلقي القصد من التنقل.يختلف وضع "
"singleInstance"
" أيضًا عن الوضع ""singleTask"
". و"singleInstancePerTask"
من ناحية واحدة فقط: أي نشاط يحمل وضع التشغيل"singleTask"
أو"singleInstancePerTask"
يتيح تنفيذ أنشطة أخرى، أي"standard"
"singleTop"
أنشطة، كن جزءًا من مهمتها.حاسمة ومن ناحية أخرى، فإن نشاط
"singleInstance"
لا يسمح بأي والأنشطة السابقة كجزء من مهمتها. ويجب أن يكون هذا النشاط هو النشاط الوحيد في المهمة. إذا كان يبدأ نشاطًا آخر، فيتم تعيين هذا النشاط لمهمة مختلفة، إذا كانFLAG_ACTIVITY_NEW_TASK
يشمل الهدف.حالات الاستخدام وضع الإطلاق هل هناك حالات متعدّدة؟ التعليقات عمليات الإطلاق العادية لمعظم الأنشطة "standard"
نعم تلقائي: ينشئ النظام دائمًا مثيلاً جديدًا للنشاط في المهمة المستهدفة وتوجيه القصد إليها. "singleTop"
بشكل مشروط إذا كان هناك مثيل للنشاط موجود بالفعل أعلى المهمة المستهدفة، يوجِّه النظام الغرض إلى ذلك المثيل من خلال استدعاء طريقة onNewIntent()
بدلاً من إنشاء مثيل جديد للنشاط.عمليات الإطلاق المتخصصة
(لا يُنصح به للاستخدام العام)"singleTask"
بشكل مشروط ينشئ النظام النشاط في جذر مهمة جديدة أو يحدد موقع النشاط في مهمة حالية بنفس التقارب. إذا كان هناك مثيل للنشاط موجود بالفعل وكان في جذر المهمة، فسيبدأ النظام توجّه النية إلى المثيل الحالي من خلال استدعاء طريقة onNewIntent()
، بدلاً من إنشاء جديدة."singleInstance"
لا مثل "singleTask"
، باستثناء أنّ النظام لا يشغِّل أيًّا والأنشطة الأخرى في المهمة التي تحتفظ بالمثيل. يكون النشاط دائمًا عضو واحد فقط في مهمته."singleInstancePerTask"
بشكل مشروط يمكن تشغيل النشاط فقط كنشاط جذر للمهمة، حيث يكون النشاط الذي أدى إلى إنشاء المهمة، وبالتالي يكون هناك مثيل واحد فقط من هذا النشاط في مهمة ما. ومع ذلك، يمكن إنشاء مثيل للنشاط عدة مرات في مهام مختلفة. كما هو موضَّح في الجدول السابق،
"standard"
هو الوضع التلقائي مناسبة لمعظم أنواع الأنشطة."singleTop"
هو أيضًا وضع إطلاق شائع ومفيد للعديد من أنواع الأنشطة. إن الأوضاع الأخرى،"singleTask"
و"singleInstance"
و"singleInstancePerTask"
هي غير مناسب لمعظم التطبيقات. ينتج عنها نموذج تفاعل من المحتمل أن يكون غير مألوف المستخدمين ويختلف كثيرًا عن معظم التطبيقات الأخرى.بغض النظر عن وضع الإطلاق الذي تختاره، تأكد من اختبار قابلية الاستخدام للنشاط أثناء الإطلاق وعند الرجوع إليه من الأنشطة والمهام الأخرى باستخدام زر الرجوع.
لمزيد من المعلومات حول أوضاع الإطلاق وتفاعلها مع "
Intent
" علامات، انظر المهام والحِزم الخلفية.android:lockTaskMode
- يحدد هذا الإعداد كيفية عرض النظام لهذا النشاط عندما يكون الجهاز قيد التشغيل.
قفل وضع المهام.
يمكن لنظام Android تنفيذ المهام في تجربة غامرة تشبه أسلوب Kiosk تُسمى "وضع قفل المهام". عندما يبدأ النظام في وضع مهمة القفل، لا يمكن لمستخدمي الأجهزة عادةً الاطّلاع على الإشعارات والوصول إلى التطبيقات غير المدرَجة في القائمة المسموح بها أو العودة إلى الشاشة الرئيسية، إلا إذا تمت إضافة تطبيق Home إلى القائمة المسموح بها
التطبيقات التي يمكن أن يعمل النظام في القائمة المسموح بها من قِبل وحدة التحكّم بسياسة الجهاز (DPC) عندما يكون في وضع قفل المهمة. النظام والتطبيقات المميّزة، يمكن تشغيله في وضع قفل المهمة بدون إدراجه في القائمة المسموح بها.
يمكن أن تكون القيمة أيًا مما يلي قيم سلسلة
R.attr.lockTaskMode
:القيمة الوصف "normal"
القيمة التلقائية. هذه هي القيمة التلقائية. لا يتم تشغيل المهام في وضع قفل المهمة ولكن يمكن يتم وضعها هناك من خلال الاتصال startLockTask()
"never"
لا يتم تشغيل "مهام Google" في وضع
lockTask
، ولا يمكن لمستخدم الجهاز تثبيت هذه المهام من خلال شاشة "الأماكن الأخيرة".ملاحظة: لا يتوفّر هذا الوضع إلا لتطبيقات النظام والتطبيقات المتميزة. يتم التعامل مع التطبيقات غير المميزة التي تحمل هذه القيمة على أنّها
normal
."if_whitelisted"
في حال سمحت وحدة التحكّم بسياسة الجهاز باستخدام هذه الحزمة باستخدام DevicePolicyManager.setLockTaskPackages()
، فإن هذا الوضع مماثل لـalways
، إلا أن النشاط يحتاج إلى استدعاءstopLockTask()
قبل البدء تتمكن من إنهاءها إذا كانت هذه هي آخر مهمة مقفلة. إذا لم تسمح وحدة التحكّم بسياسة الجهاز (DPC) باستخدام هذه الحزمة، سيتم وضع مماثل لـnormal
."always"
يتم دائمًا تشغيل المهام المرتبطة بهذا النشاط في وضع قفل المهمة. إذا كان النظام مفعّلاً قفل وضع المهمة عند تشغيل هذه المهمة، يتم تشغيل المهمة الجديدة أعلى المهمة الحالية. يمكن للمهام التي يتم تشغيلها في هذا الوضع الخروج من وضع قفل المهمة من خلال إجراء مكالمة
finish()
ملاحظة: لا يتوفّر هذا الوضع إلا لتطبيقات النظام والتطبيقات المتميزة. يتم التعامل مع التطبيقات غير المميزة التي تحمل هذه القيمة على أنّها
normal
.تمّ تقديم هذه السمة في المستوى 23 من واجهة برمجة التطبيقات.
android:maxRecents
- الحد الأقصى لعدد المهام الجذرية في هذا النشاط في شاشة "أحدث المكالمات". عند بلوغ هذا العدد من الإدخالات، يزيل النظام أحدث الإدخالات المثيل المستخدم من شاشة "الأخيرة". القيم الصالحة هي الأعداد الصحيحة من 1 إلى 50 أو من 1 إلى 25 على الأجهزة ذات الذاكرة المنخفضة. القيمة "صفر" غير صالحة. القيمة التلقائية هي 16.
android:maxAspectRatio
الحد الأقصى لنسبة العرض إلى الارتفاع التي يدعمها النشاط. في حال تشغيل التطبيق على جهاز ذي نسبة عرض إلى ارتفاع أوسع، يعمل النظام تلقائيًا على عرض التطبيق في أشرطة أفقية مما يترك أجزاء من الشاشة غير مستخدمة بحيث يمكن تشغيل التطبيق بأقصى نسبة عرض إلى ارتفاع محددة.
يتم التعبير عن الحد الأقصى لنسبة العرض إلى الارتفاع بالصيغة العشرية لفاصلة أطول مدّة في الجهاز البعد مقسومًا على البعد الأقصر. على سبيل المثال، إذا كان الحد الأقصى لنسبة العرض إلى الارتفاع هو 7:3، اضبط قيمة هذه السمة على 2.33.
على الأجهزة غير القابلة للارتداء، يجب أن تكون قيمة هذه السمة 1.33 أو أكبر. يجب أن يكون الإصدار 1.0 أو إصدار أحدث على الأجهزة القابلة للارتداء. وبخلاف ذلك، يتجاهل النظام تحديد القيمة.
ملاحظة: يتم تجاهل هذه السمة إذا كان النشاط يحتوي على تم ضبط
resizeableActivity
على "صحيح"، لأنّ هذا يعني نشاطك. ويدعم أي حجم.لمزيد من المعلومات حول هذه السمة، راجع توضيح الحد الأقصى لنسبة العرض إلى الارتفاع
android:multiprocess
- ما إذا كان يمكن إطلاق مثيل للنشاط في عملية المكوِّن
الذي بدأه. تكون القيمة
"true"
إذا أمكن، و"false"
إذا لم يكن ذلك ممكنًا. القيمة التلقائية هي"false"
.وعادةً ما يتم إطلاق مثيل جديد لأي نشاط في عملية المستخدم الذي يحدده، وبالتالي يتم تشغيل جميع مثيلات النشاط في نفس الوقت الدفع. وفي حال ضبط هذه العلامة على
"true"
، تكون أمثلة يمكن تشغيل نشاط في عمليات متعددة، مما يسمح للنظام بإنشاء مثيلات وأينما تم استخدامها، شريطة أن تسمح الأذونات بذلك، وهو شيء يكاد غير ضروري أو مرغوب فيه أبدًا. android:name
- اسم الفئة التي تنفّذ النشاط، وهي فئة فرعية من
Activity
قيمة السمة هي وهو عادةً مؤهّل بالكامل اسم الفئة، مثل"com.example.project.ExtracurricularActivity"
. ومع ذلك، وكاختصار، إذا كان الحرف الأول من الاسم نقطة، مثل".ExtracurricularActivity"
، يتم إلحاقها بحقل namespace المحددة في ملفbuild.gradle
.بعد نشر التطبيق، لا تغيير هذا الاسم، ما لم يتم ضبط
android:exported="false"
. لا يوجد إعداد افتراضي. يجب تحديد الاسم. android:noHistory
- ما إذا تمت إزالة النشاط من حزمة الأنشطة
تم الانتهاء من خلال استدعاء
finish()
المستخدم، عندما ينتقل بعيدًا عنه وتوقف عن استخدام مرئيًا على الشاشة. و"true"
إذا تم الانتهاء، و"false"
إذا لم يكن كذلك. القيمة التلقائية هي"false"
.تعني القيمة
"true"
أن النشاط لا يترك الآثار التاريخية. لا تظل في مكدس النشاط للمهمة، حتى لا يتمكن المستخدم من العودة إليها. وفي هذه الحالة، لن يتم الاتصال بـ "onActivityResult()
" أبدًا إذا ابدأ نشاطًا آخر لنتيجة من هذا النشاط.تمّ تقديم هذه السمة في المستوى 3 من واجهة برمجة التطبيقات.
android:parentActivityName
- اسم فئة العنصر الرئيسي المنطقي للنشاط. يجب أن يتطابق الاسم هنا مع الفئة.
الاسم الذي أُطلق على عنصر
<activity>
المقابلandroid:name
.يقرأ النظام هذه السمة لتحديد النشاط الذي يبدأ ومتى ينقر المستخدم فوق الزر لأعلى في شريط الإجراءات. يمكن للنظام أيضًا استخدام هذه المعلومات لتنفيذ ما يلي: إنشاء حزمة خلفية للأنشطة باستخدام "
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
يتم الاحتفاظ بحالة هذا النشاط، إلى جانب حالة كل نشاط أعلى رجوع stack الذي يضم السمة
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
اسم العملية التي يتم فيها تشغيل النشاط. عادةً ما تكون جميع مكونات تشغيل تطبيقك في اسم عملية افتراضي يتم إنشاؤه للتطبيق، ولا بحاجة إلى استخدام هذه السمة. ولكن إذا لزم الأمر، يمكنك إلغاء العملية الافتراضية باستخدام هذه السمة، ما يتيح لك نشر مكونات التطبيق على وعمليات متعددة.
إذا كان الاسم المعيّن لهذه السمة يبدأ بنقطتين (
:
)، تكون قيمة عملية خاصة بالتطبيق، عند الحاجة تشغيل النشاط في تلك العملية.إذا بدأ اسم العملية بحرف صغير، يتم تنفيذ النشاط في عملية عمومية بهذا الاسم، بشرط أن يكون لديه إذن بالقيام بذلك. وهذا يتيح للمكونات في التطبيقات المختلفة مشاركة عملية، مما يقلل استخدام الموارد.
إنّ العنصر
<application>
process
تعيين اسم عملية افتراضي مختلف لجميع المكونات.android:relinquishTaskIdentity
ما إذا كان النشاط يتنازل عن معرّفات المهام الخاصة به لنشاط أعلى منه في حزمة مهام Google. يتم استبدال القاعدة في أي مهمة يكون نشاط الجذر فيها تم ضبط هذه السمة على
"true"
Intent
مع قيمة النشاط التالي في المهمة.إذا كان النشاط التالي يحتوي أيضًا على مجموعة السمات هذه إلى
"true"
، فإنه ينتج عن قاعدةIntent
لأي نشاط يتم إطلاقه المهمة. يستمر هذا لكل نشاط إلى أن يتم اكتشاف نشاط يحتوي على مجموعة السمة هذه إلى"false"
. القيمة التلقائية هي"false"
.هذه السمة التي تم ضبطها على
"true"
تسمح أيضًا باستخدام النشاطActivityManager.TaskDescription
لتغيير التصنيفات والألوان والرموز في شاشة الأماكن الأخيرة.android:requireContentUriPermissionFromCaller
-
تحدّد الأذونات اللازمة لبدء هذا النشاط عند اجتيازه معرّفات الموارد المنتظمة (URI) للمحتوى. القيمة التلقائية هي
none
، ما يعني أنّه ما مِن قيمة محدَّدة الأذونات مطلوبة. يؤدي ضبط هذه السمة إلى تقييد النشاط الاستدعاء استنادًا إلى أذونات المُدعي. وإذا لم يكن لدى المُرسل الأذونات المطلوبة، سيتم رفض بدء النشاط عبرSecurityException
.يُرجى العلم أنّ إجراء التنفيذ يعمل مع معرّفات الموارد المنتظمة (URI) للمحتوى داخل
Intent.getData()
،Intent.EXTRA_STREAM
, أوIntent.getClipData()
قد تكون قيمة سلسلة، باستخدام '\\;' لإلغاء أحرف مثل '\\n' أو '\\uxxxx' لحرف يونيكود؛
يجب أن تكون القيمة واحدة من القيم الثابتة التالية.
ثابت القيمة الوصف لا شيء 0 الإعداد التلقائي، بدون الحاجة إلى أذونات محدّدة. قراءة 1 تسمح هذه السياسة بفرض إذن الوصول إلى معرِّفات الموارد المنتظمة (URI) للمحتوى الذي تم تمريره من أجل القراءة. readAndWrite 4 تفرض هذه السياسة على المُرسِل الحصول على إذن بالوصول للقراءة والكتابة إلى معرّفات الموارد المنتظمة (URI) للمحتوى التي تم تمريرها. readOrWrite 3 تفرض على المُدعي الحصول على إذن بقراءة معرّفات الموارد المنتظمة (URI) للمحتوى التي تم تمريرها أو كتابتها. كتابة 2 يتم فرض منح إذن الوصول للكتابة إلى معرّفات الموارد المنتظمة (URI) للمحتوى التي تم تمريرها. android:resizeableActivity
-
تحدِّد هذه السياسة ما إذا كان التطبيق يتيح وضع النوافذ المتعددة. إِنْتَ يمكنك ضبط هذه السمة في
<activity>
أو<application>
العنصر.في حال ضبط هذه السمة على
"true"
، يمكن للمستخدم بدء النشاط في وضع تقسيم الشاشة ووضع التصميم الحر. إذا ضبطت السمة على"false"
، سيتم تطبيق لا يمكن اختباره أو تحسينه ليناسب بيئة متعددة النوافذ. يمكن للنظام الاستمرار في وضع النشاط في وضع النوافذ المتعددة مع تطبيق وضع التوافق.إنّ ضبط هذه السمة على
"false"
لا يضمن عدم توفّرها التطبيقات الأخرى في وضع النوافذ المتعددة المرئية على الشاشة، مثلاً في وضع "نافذة ضمن النافذة" على شاشات أخرى. لذلك، لا يعني ضبط هذه العلامة أنّ تطبيقك إمكانية الوصول إلى الموارد الحصرية.إذا كان تطبيقك يستهدف المستوى 24 من واجهة برمجة التطبيقات أو مستوى أعلى بدون تحديد قيمة لهذه السمة، يتم ضبط قيمة السمة تلقائيًا على
"true"
.إذا كان تطبيقك يستهدف المستوى 31 من واجهة برمجة التطبيقات أو مستوى أعلى، ستعمل هذه السمة بشكل مختلف على التطبيقات الصغيرة والكبيرة. الشاشات:
- الشاشات الكبيرة (sw >= 600dp): تتيح جميع التطبيقات وضع النوافذ المتعددة. تشير السمة إلى
ما إذا كان من الممكن تغيير حجم التطبيق، وليس ما إذا كان التطبيق يتوافق مع وضع النوافذ المتعددة. في حال حذف
resizeableActivity="false"
، يتم ضبط التطبيق في وضع التوافق عند الضرورة. للتوافق مع أبعاد العرض. - الشاشات الصغيرة (sw < 600dp): إذا كانت
resizeableActivity="true"
والحد الأدنى العرض والحد الأدنى لارتفاع النشاط ضمن متطلبات النوافذ المتعددة، يدعم وضع النوافذ المتعددة. إذاresizeableActivity="false"
، لن يتمكن التطبيق من تتيح وضع النوافذ المتعددة بغض النظر عن الحد الأدنى للعرض والارتفاع للنشاط.
ملاحظة: يمكن للشركات المصنّعة للأجهزة إلغاء المستوى 31 من واجهة برمجة التطبيقات. السلوك.
تمّت إضافة هذه السمة في المستوى 24 من واجهة برمجة التطبيقات.
ملاحظة: يتم تطبيق قيمة النشاط الجذري للمهمة على جميع الأنشطة الإضافية التي تم إطلاقها في المهمة. أي، إذا كان النشاط الجذري يمكن تغيير حجم مهمة ما، فإن النظام سيتعامل مع جميع الأنشطة الأخرى في مهمة على أنها يمكن تغيير حجمها. إذا لم يمكن تغيير حجم نشاط الجذر، فإن قيمة لا يمكن تغيير حجم الأنشطة في المهمة.
- الشاشات الكبيرة (sw >= 600dp): تتيح جميع التطبيقات وضع النوافذ المتعددة. تشير السمة إلى
ما إذا كان من الممكن تغيير حجم التطبيق، وليس ما إذا كان التطبيق يتوافق مع وضع النوافذ المتعددة. في حال حذف
android:screenOrientation
الاتجاه المطلوب للنشاط.
عندما يملأ أحد الأنشطة الشاشة بأكملها، يعمل الاتجاه المطلوب كاقتراح تغيير الاتجاه على تلك الشاشة ليتطابق مع القيمة المطلوبة. وهذا يمكن أن يؤدي إلى الذي يختلف عن الاتجاه المادي للشاشة في المساحة، مما يتطلب للمستخدم تدوير الجهاز لمواصلة استخدام التطبيق. على Android 12 (مستوى واجهة برمجة التطبيقات) 31) والإصدارات الأحدث، يمكن للشركات المصنّعة للأجهزة ضبط إعدادات أجهزة فردية (مثل شاشة بحجم الجهاز اللوحي لجهاز قابل للطي) لتجاهل هذا الاقتراح، وبدلاً من ذلك فرض عرض النشاط ضمن شاشة عريضة أفقيًا في الاتجاه الذي يفضّله المستخدم للجهاز هذا النمط إلى أن يتطابق اتجاه النشاط مع الاتجاه المطلوب دون الحاجة إلى أن تدوير أجهزتهم فعليًا.
في وضع النوافذ المتعددة، لا يعمل الاتجاه المطلوب كاقتراح للقسم توجهك. إذا كان النشاط Letterboxed، الاتجاه الذي يؤثر على الأشرطة الأفقية المطبقة على النشاط.
يمكن أن تكون القيمة أيًّا من السلاسل التالية:
"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
.وبشكلٍ تلقائي، يكون لجميع الأنشطة في أحد التطبيقات التقارب نفسه. إِنْتَ يمكنك تعيين هذه السمة لتجميعها بشكل مختلف، وحتى وضع محددة في تطبيقات مختلفة ضمن نفس المهمة. إلى تحديد أن النشاط لا تقارب أي مهمة، إلى سلسلة فارغة.
إذا لم يتم ضبط هذه السمة، سيكتسب النشاط مجموعة التقارب للتطبيق. يمكنك الاطّلاع على
<application>
العنصرtaskAffinity
. اسم التقارب الافتراضي لأحد التطبيقات هو مساحة الاسم المحددة في ملفbuild.gradle
.android:theme
- إشارة إلى مورد نمط يحدّد موضوعًا عامًا للنشاط
يؤدي ذلك إلى ضبط سياق النشاط تلقائيًا لاستخدام هذا الحقل
theme
وربما أيضًا تتسبب في "البدء" والرسوم المتحركة قبل النشاط الذي يتم إطلاقه، لتحسين أن يتطابق مع الشكل الذي يبدو عليه النشاط بالفعل.إذا لم يتم ضبط هذه السمة، سيكتسب النشاط مجموعة المظاهر التطبيق ككل، بدءًا من
<application>
العنصرtheme
. وإذا لم يتم ضبط هذه السمة أيضًا، يتم استخدام مظهر النظام التلقائي. لمزيد من المعلومات، للمزيد من المعلومات، يُرجى الاطّلاع على الأنماط والمظاهر. android:uiOptions
خيارات إضافية لواجهة المستخدم لأحد الأنشطة. يجب أن تكون القيمة واحدة مما يلي.
القيمة الوصف "none"
ما مِن خيارات إضافية لواجهة المستخدم. هذا هو الخيار التلقائي. "splitActionBarWhenNarrow"
يضيف شريط في أسفل الشاشة لعرض بنود العمل في شريط التطبيقات، ويُعرف أيضًا باسم شريط الإجراءات عند مقيدة للمساحة الأفقية، كما هو الحال عند الوضع الرأسي على الهاتف. بدلاً من رمز صغير عدد بنود العمل التي تظهر في شريط التطبيق أعلى الشاشة، مقسمًا إلى قسم التنقل العلوي والشريط السفلي لبنود العمل. وهذا يعني أنه من المعقول لا يتم توفير مساحة كافية لبنود العمل فحسب، بل أيضًا للتنقّل والعناوين والعناصر في الجزء العلوي. ولا يتمّ تقسيم عناصر القائمة على الشريطين. تظهر دائمًا لمزيد من المعلومات حول شريط التطبيقات، اطّلِع على مقالة إضافة شريط التطبيقات.
تمّت إضافة هذه السمة في المستوى 14 من واجهة برمجة التطبيقات.
android:windowSoftInputMode
- كيفية تفاعل النافذة الرئيسية للنشاط مع النافذة التي تحتوي على
لوحة المفاتيح الافتراضية على الشاشة. يؤثر إعداد هذه السمة في
الأشياء:
- ما إذا كانت لوحة المفاتيح الافتراضية مخفية أو مرئية عندما يصبح النشاط تركيز انتباه المستخدم.
- ما إذا كانت النافذة الرئيسية للنشاط يتم تغيير حجمها لتوفير مساحة للوحة المفاتيح الناعمة أو محتوياتها تحريك لجعل التركيز الحالي مرئيًا عندما يتم تغطية جزء من النافذة لوحة المفاتيح الناعمة.
يجب أن يكون الإعداد إحدى القيم المدرجة في الجدول التالي أو تركيبة مكوّنة من قيمة
"state..."
واحدة جمع"adjust..."
واحد تعيين قيم متعددة في أي من المجموعتين، مثل قيم متعددة تتضمن"state..."
قيمة نتائج غير محددة. يتم الفصل بين القيم الفردية بشريط عمودي (|
)، كما هو موضَّح في المثال التالي:<activity android:windowSoftInputMode="stateVisible|adjustResize" ... >
القيم المحددة هنا (بخلاف
"stateUnspecified"
"adjustUnspecified"
) تلغي القيم المحددة في المظهر.القيمة الوصف "stateUnspecified"
ما إذا كانت لوحة المفاتيح الافتراضية مخفية أو مرئية غير محدد. يختار النظام الولاية أو يعتمد على الوضع في الموضوع. وهذا هو الإعداد التلقائي لسلوك لوحة المفاتيح الافتراضية.
"stateUnchanged"
يتم الاحتفاظ بلوحة المفاتيح الافتراضية في آخر حالة كانت فيها، مرئية أو مخفية، عندما يأتي النشاط في المقدمة. "stateHidden"
يتم إخفاء لوحة المفاتيح الافتراضية عندما يختار المستخدم النشاط الذي عندما ينتقل المستخدم بشكل إيجابي إلى الصفحة نشاطك، بدلاً من الرجوع إليه عند مغادرة نشاط آخر. "stateAlwaysHidden"
يتم دائمًا إخفاء لوحة المفاتيح الافتراضية عندما تكون النافذة الرئيسية للنشاط التركيز على المدخلات. "stateVisible"
تظهر لوحة المفاتيح الافتراضية عندما يختار المستخدم النشاط - أي عندما ينتقل المستخدم بشكل إيجابي إلى الأمام إلى النشاط، بدلاً من الرجوع إليه عند ترك نشاط الأخرى. "stateAlwaysVisible"
تظهر لوحة المفاتيح الافتراضية عندما تتلقّى النافذة تركيز الإدخال. "adjustUnspecified"
ما إذا كان يمكن تغيير حجم النافذة الرئيسية للنشاط لتوفير مساحة للوحة المفاتيح الافتراضية أو للمحتوى من "التحريك في النافذة" لجعل التركيز الحالي مرئيًا على الشاشة غير محدد. يحدد النظام تلقائيًا أحد هذه الأوضاع حسب حول ما إذا كان محتوى النافذة يتضمّن أي طرق عرض تخطيط من تمرير محتوياتها. إذا كان هناك طريقة عرض من هذا القبيل، فإن النافذة تغيير الحجم، على افتراض أن التمرير يمكن أن يجعل كل يكون محتوى النافذة مرئيًا في مساحة أصغر. هذا هو الإعداد التلقائي لسلوك النافذة الرئيسية.
"adjustResize"
يتم دائمًا تغيير حجم النافذة الرئيسية للنشاط لتوفير مساحة لوحة المفاتيح اللينة على الشاشة. "adjustPan"
لا يتم تغيير حجم النافذة الرئيسية للنشاط لتوفير مساحة لوحة المفاتيح. بدلاً من ذلك، تتم إضافة محتوى النافذة تلقائيًا التحريك حتى لا تحجب لوحة المفاتيح التركيز الحالي أبدًا، ويمكن للمستخدمين دائمًا رؤية ما يكتبونه. وهذا أقل عمومًا يكون مرغوبًا فيه من تغيير الحجم، لأن المستخدم قد يحتاج إلى إغلاق لوحة المفاتيح للوصول إلى الأجزاء المحجوبة من النافذة والتفاعل معها. تمّ تقديم هذه السمة في المستوى 3 من واجهة برمجة التطبيقات.
- تم تقديمها في:
- مستوى واجهة برمجة التطبيقات 1 لجميع السمات باستثناء
noHistory
وwindowSoftInputMode
، التي تمت إضافتها في واجهة برمجة التطبيقات المستوى 3. - راجِع أيضًا:
<application>
<activity-alias>
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2024-08-22 (حسب التوقيت العالمي المتفَّق عليه)
[]
[]
{
"lastModified": "تاريخ التعديل الأخير: 2024-08-22 (حسب التوقيت العالمي المتفَّق عليه)",
"confidential": False
}