<فعالیت>

نحو:
<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:enableOnBackInvokedCallback=["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:intentMatchingFlags=["none" | "enforceIntentFilter" | "allowNullAction"]
          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:minAspectRatio="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>
<property>
شرح:
یک فعالیت (یک زیرکلاس Activity ) را تعریف می‌کند که بخشی از رابط کاربری بصری برنامه را پیاده‌سازی می‌کند. همه فعالیت‌ها باید توسط عناصر <activity> در فایل manifest نمایش داده شوند. هر فعالیتی که در آنجا تعریف نشده باشد، توسط سیستم دیده نمی‌شود و هرگز اجرا نمی‌شود.
ویژگی‌ها:
android:allowEmbedded

نشان می‌دهد که اکتیویتی می‌تواند به عنوان فرزندِ تعبیه‌شده‌ی اکتیویتی دیگری راه‌اندازی شود، به خصوص در مواردی که فرزند در یک کانتینر، مانند یک Display متعلق به اکتیویتی دیگر، قرار دارد. به عنوان مثال، اکتیویتی‌هایی که برای اعلان‌های سفارشی Wear استفاده می‌شوند، این را اعلام می‌کنند تا Wear بتواند اکتیویتی را در جریان زمینه‌اش که در فرآیند دیگری قرار دارد، نمایش دهد.

مقدار پیش‌فرض این ویژگی false است.

android:allowTaskReparenting
اینکه آیا فعالیت می‌تواند از وظیفه‌ای که آن را آغاز کرده است به وظیفه‌ای که به آن وابستگی دارد، زمانی که آن وظیفه در مرحله بعدی قرار می‌گیرد، منتقل شود یا خیر. اگر بتواند منتقل شود، "true" و اگر در همان جایی که شروع شده باقی بماند، "false" است.

اگر این ویژگی تنظیم نشده باشد، مقداری که توسط ویژگی allowTaskReparenting مربوط به عنصر <application> تنظیم شده است، به فعالیت اعمال می‌شود. مقدار پیش‌فرض "false" است.

معمولاً وقتی یک فعالیت شروع می‌شود، با وظیفه‌ی فعالیتی که آن را شروع کرده مرتبط می‌شود و در تمام طول عمر خود در آنجا باقی می‌ماند. می‌توانید از این ویژگی استفاده کنید تا آن را مجبور کنید که وقتی وظیفه‌ی فعلی‌اش دیگر نمایش داده نمی‌شود، به وظیفه‌ای که به آن وابستگی دارد، دوباره والد شود. معمولاً، این ویژگی برای انتقال فعالیت‌های یک برنامه به وظیفه‌ی اصلی مرتبط با آن برنامه استفاده می‌شود.

برای مثال، اگر یک پیام ایمیل حاوی لینکی به یک صفحه وب باشد، کلیک روی لینک، یک activity را نمایش می‌دهد که می‌تواند صفحه را نمایش دهد. این activity توسط برنامه مرورگر تعریف شده است اما به عنوان بخشی از وظیفه ایمیل راه‌اندازی می‌شود. اگر به وظیفه مرورگر reparent شده باشد، وقتی مرورگر دوباره به جلو می‌آید، نمایش داده می‌شود و وقتی وظیفه ایمیل دوباره به جلو می‌آید، وجود ندارد.

وابستگی یک فعالیت توسط ویژگی taskAffinity تعریف می‌شود. وابستگی یک وظیفه با خواندن وابستگی فعالیت ریشه آن تعیین می‌شود. بنابراین، طبق تعریف، یک فعالیت ریشه همیشه در وظیفه‌ای با وابستگی یکسان قرار دارد. از آنجایی که فعالیت‌هایی با حالت‌های راه‌اندازی "singleTask" یا "singleInstance" فقط می‌توانند در ریشه یک وظیفه باشند، re-parenting به حالت‌های "standard" و "singleTop" محدود می‌شود. (همچنین به ویژگی launchMode مراجعه کنید.)

android:alwaysRetainTaskState
اینکه آیا وضعیت وظیفه‌ای که فعالیت در آن قرار دارد همیشه توسط سیستم حفظ می‌شود یا خیر. اگر چنین باشد، "true" و اگر سیستم بتواند در شرایط خاص، وظیفه را به حالت اولیه خود بازنشانی کند، "false "false" است. مقدار پیش‌فرض "false" است. این ویژگی فقط برای فعالیت ریشه یک وظیفه معنی‌دار است. برای سایر فعالیت‌ها نادیده گرفته می‌شود.

معمولاً، سیستم در شرایط خاصی که کاربر دوباره آن وظیفه را از صفحه اصلی انتخاب می‌کند، یک وظیفه را پاک می‌کند و تمام فعالیت‌های موجود در پشته بالای فعالیت ریشه را حذف می‌کند. معمولاً این کار در صورتی انجام می‌شود که کاربر برای مدت زمان مشخصی، مثلاً 30 دقیقه، از آن وظیفه بازدید نکرده باشد.

با این حال، وقتی این ویژگی "true" باشد، کاربران همیشه به آخرین وضعیت وظیفه برمی‌گردند، صرف نظر از اینکه چگونه به آنجا رسیده‌اند. این در برنامه‌هایی مانند مرورگر وب که در آنها وضعیت‌های زیادی مانند چندین تب باز وجود دارد که کاربران نمی‌خواهند آنها را از دست بدهند، مفید است.

android:autoRemoveFromRecents
آیا وظایفی که توسط فعالیتی با این ویژگی راه‌اندازی می‌شوند، تا زمان تکمیل آخرین فعالیت در آن وظیفه، در صفحه Recents باقی می‌مانند یا خیر. اگر true ، وظیفه به طور خودکار از صفحه Recents حذف می‌شود. این امر استفاده فراخواننده از FLAG_ACTIVITY_RETAIN_IN_RECENTS را لغو می‌کند. این مقدار باید یک مقدار بولی، یا "true" یا "false" باشد.
android:banner
یک منبع قابل ترسیم که یک بنر گرافیکی گسترده برای آیتم مرتبط با آن ارائه می‌دهد. از آن به همراه تگ <activity> برای ارائه یک بنر پیش‌فرض برای یک فعالیت خاص یا از آن به همراه تگ <application> برای ارائه یک بنر برای همه فعالیت‌های برنامه استفاده کنید.

سیستم از بنر برای نمایش یک برنامه در صفحه اصلی اندروید تی‌وی استفاده می‌کند. از آنجایی که بنر فقط در صفحه اصلی نمایش داده می‌شود، فقط توسط برنامه‌هایی که دارای فعالیتی هستند که هدف CATEGORY_LEANBACK_LAUNCHER را مدیریت می‌کند، مشخص می‌شود.

این ویژگی به عنوان مرجعی برای یک منبع قابل ترسیم حاوی تصویر، مانند "@drawable/banner" تنظیم می‌شود. هیچ بنر پیش‌فرضی وجود ندارد.

برای اطلاعات بیشتر، به بخش «ارائه بنر صفحه اصلی» در «شروع کار با برنامه‌های تلویزیونی» مراجعه کنید.

android:canDisplayOnRemoteDevices

نشان می‌دهد که آیا فعالیت می‌تواند روی یک دستگاه از راه دور که ممکن است اندروید را اجرا کند یا خیر، نمایش داده شود یا خیر. این مقدار باید یک مقدار بولی، یا "true" یا "false" باشد.

مقدار پیش‌فرض این ویژگی "true" است.

android:clearTaskOnLaunch
آیا هنگام اجرای مجدد وظیفه از صفحه اصلی، همه فعالیت‌ها، به جز فعالیت ریشه، از آن حذف می‌شوند یا خیر. اگر وظیفه همیشه به فعالیت ریشه‌اش محدود شود، "true" و اگر نه "false" را انتخاب کنید. مقدار پیش‌فرض "false" است. این ویژگی فقط برای فعالیت‌هایی که یک وظیفه جدید - فعالیت ریشه - را شروع می‌کنند، معنی‌دار است. برای سایر فعالیت‌های موجود در وظیفه نادیده گرفته می‌شود.

وقتی مقدار "true" باشد، هر بار که کاربران وظیفه را شروع می‌کنند، صرف نظر از اینکه آخرین بار در وظیفه چه کاری انجام داده‌اند و صرف نظر از اینکه از دکمه Back یا Home برای خروج از آن استفاده کرده‌اند یا خیر، به فعالیت ریشه آن هدایت می‌شوند. وقتی مقدار "false" باشد، در برخی شرایط، اما نه همیشه، می‌توان وظیفه را از فعالیت‌ها پاک کرد. برای اطلاعات بیشتر، به ویژگی alwaysRetainTaskState مراجعه کنید.

فرض کنید کاربر فعالیت P را از صفحه اصلی اجرا می‌کند و از آنجا به فعالیت Q می‌رود. کاربر سپس روی صفحه اصلی ضربه می‌زند و سپس به فعالیت P برمی‌گردد. معمولاً کاربر فعالیت Q را می‌بیند، زیرا این کاری است که آخرین بار در وظیفه P انجام داده است. با این حال، اگر P این پرچم را روی "true" تنظیم کند، تمام فعالیت‌های بالای آن - در این مورد، Q - هنگام اجرای فعالیت P از صفحه اصلی توسط کاربر حذف می‌شوند. بنابراین، کاربر هنگام بازگشت به وظیفه فقط P را می‌بیند.

اگر این ویژگی و allowTaskReparenting هر دو "true" باشند، هر فعالیتی که بتواند دوباره والد شود به وظیفه‌ای که با آن قرابت مشترک دارد منتقل می‌شود. سپس فعالیت‌های باقی‌مانده حذف می‌شوند.

اگر FLAG_ACTIVITY_RESET_TASK_IF_NEEDED تنظیم نشده باشد، این ویژگی نادیده گرفته می‌شود.

android:colorMode

حالت رنگ فعالیت را مشخص می‌کند. در صورت مشخص شدن، می‌تواند hdr یا wideColorGamut باشد.

اگر hdr ، درخواست می‌کند که فعالیت در محدوده دینامیکی بالا نمایش داده شود، البته اگر دستگاه از آن پشتیبانی کند.

اگر wideColorGamut درخواست کند که فعالیت در حالت طیف رنگ گسترده در دستگاه‌های سازگار نمایش داده شود. در حالت طیف رنگ گسترده، یک پنجره می‌تواند خارج از طیف رنگ SRGB رندر شود تا رنگ‌های پر جنب و جوش‌تری نمایش دهد. اگر دستگاه از رندر طیف رنگ گسترده پشتیبانی نمی‌کند، این ویژگی هیچ تاثیری ندارد. برای اطلاعات بیشتر در مورد رندر در حالت رنگ گسترده، به Enhance graphics with wide color content مراجعه کنید.

android:configChanges
تغییرات پیکربندی که اکتیویتی خودش مدیریت می‌کند را فهرست می‌کند. وقتی یک تغییر پیکربندی در زمان اجرا رخ می‌دهد، اکتیویتی به طور پیش‌فرض خاموش و مجدداً راه‌اندازی می‌شود، اما تعریف یک پیکربندی با این ویژگی از راه‌اندازی مجدد اکتیویتی جلوگیری می‌کند. در عوض، اکتیویتی در حال اجرا باقی می‌ماند و متد onConfigurationChanged() آن فراخوانی می‌شود.

توجه: از این ویژگی فقط در موارد خاص برای بهبود عملکرد و پاسخگویی برنامه استفاده کنید. برای اطلاعات بیشتر، به «مدیریت تغییرات پیکربندی» مراجعه کنید.

رشته‌های زیر مقادیر معتبری برای این ویژگی هستند. چندین مقدار با | از هم جدا می‌شوند، مانند "locale|navigation|orientation" .

ارزش توضیحات
"colorMode"

قابلیت‌های حالت رنگ صفحه نمایش (گستره رنگ یا محدوده دینامیکی) تغییر کرده‌اند.

نکته: حالت رنگی که اکتیویتی با استفاده از ویژگی colorMode یا در زمان اجرا درخواست می‌کند، با قابلیت حالت‌های رنگی مختلف متفاوت است. تغییر حالت رنگی که اکتیویتی استفاده می‌کند، باعث تغییر پیکربندی نمی‌شود، زیرا قابلیت‌های رنگی نمایشگر تغییر نکرده است.

"density"

تغییری در تراکم نمایشگر، مانند زمانی که کاربر مقیاس نمایشگر متفاوتی را مشخص می‌کند یا نمایشگر متفاوتی اکنون فعال است.

در سطح API 24 اضافه شد .

"fontScale" تغییر در ضریب مقیاس‌بندی فونت، مانند زمانی که کاربر یک اندازه فونت سراسری جدید انتخاب می‌کند.
"fontWeightAdjustment" میزان افزایش وزن فونت تغییر کرده است.
"grammaticalGender" جنسیت دستوری زبان تغییر کرده است. به GrammaticalInflectionManager مراجعه کنید.

در سطح API 34 اضافه شد .

"keyboard" تغییر در نوع صفحه کلید، مانند زمانی که کاربر یک صفحه کلید خارجی را وصل می‌کند.
"keyboardHidden" تغییر در دسترسی به صفحه کلید، مانند زمانی که کاربر صفحه کلید سخت افزاری را فاش می‌کند.
"layoutDirection"

تغییر در جهت طرح‌بندی، مثلاً از چپ به راست (LTR) به راست به چپ (RTL).

در سطح API 17 اضافه شد .

"locale" تغییر در زبان محلی، مانند زمانی که کاربر زبان جدیدی را انتخاب می‌کند که متن با آن زبان نمایش داده می‌شود.
"mcc" تغییر در کد کشور موبایل IMSI (MCC) هنگام شناسایی سیم‌کارتی که MCC را به‌روزرسانی می‌کند.
"mnc" تغییر در کد شبکه تلفن همراه IMSI (MNC) هنگام شناسایی سیم‌کارتی که MNC را به‌روزرسانی می‌کند.
"navigation" تغییر نوع ناوبری (ترک‌بال یا D-pad). معمولاً این اتفاق نمی‌افتد.
"orientation"

تغییر جهت صفحه نمایش، مانند زمانی که کاربر دستگاه را می‌چرخاند.

نکته: اگر برنامه شما اندروید ۳.۲ (سطح API ۱۳) یا بالاتر را هدف قرار می‌دهد، پیکربندی‌های "screenLayout" و "screenSize" را نیز تعریف کنید، زیرا طرح‌بندی صفحه و اندازه صفحه می‌توانند هنگام تغییر جهت دستگاه بین حالت عمودی و افقی تغییر کنند.

"screenLayout" تغییر در طرح‌بندی صفحه نمایش، مانند زمانی که یک نمایشگر متفاوت فعال می‌شود.
"screenSize"

تغییر در اندازه صفحه نمایش موجود فعلی.

این نشان دهنده تغییر در اندازه موجود فعلی، نسبت به نسبت ابعاد فعلی است، بنابراین وقتی کاربر بین حالت افقی و عمودی جابجا می‌شود، تغییر می‌کند.

در سطح API 13 اضافه شد .

"smallestScreenSize"

تغییر در اندازه فیزیکی صفحه نمایش.

این نشان‌دهنده تغییر در اندازه صرف نظر از جهت‌گیری است، بنابراین فقط زمانی تغییر می‌کند که اندازه فیزیکی واقعی صفحه نمایش تغییر کند، مانند تغییر به یک نمایشگر خارجی. تغییر در این پیکربندی معادل تغییر در پیکربندی کوچکترین عرض (the smallestWidth است.

در سطح API 13 اضافه شد .

"touchscreen" تغییر در حالت صفحه لمسی، مانند زمانی که کاربر یک وسیله جانبی ورودی را متصل یا جدا می‌کند یا برنامه را بین نمایشگرهای مختلف جابجا می‌کند.
"uiMode" تغییر در حالت رابط کاربری، مانند زمانی که کاربر دستگاه را روی میز یا داک ماشین قرار می‌دهد، یا تغییر حالت شب. برای اطلاعات بیشتر در مورد حالت‌های مختلف رابط کاربری، به UiModeManager مراجعه کنید.

در سطح API 8 اضافه شد .

تمام این تغییرات پیکربندی می‌توانند بر مقادیر منابع مشاهده شده توسط برنامه تأثیر بگذارند. بنابراین، هنگامی که onConfigurationChanged() فراخوانی می‌شود، معمولاً لازم است که دوباره تمام منابع، از جمله طرح‌بندی‌های نما و drawableها، بازیابی شوند تا تغییر به درستی مدیریت شود.

نکته: برای مدیریت تغییرات پیکربندی مربوط به چند پنجره ، از هر دو "screenLayout" و "smallestScreenSize" استفاده کنید. چند پنجره‌ای در اندروید ۷.۰ (سطح API 24) یا بالاتر پشتیبانی می‌شود.

android:directBootAware

اینکه آیا اکتیویتی از قابلیت بوت مستقیم (Direct-Boot) پشتیبانی می‌کند یا خیر - یعنی اینکه آیا می‌تواند قبل از باز کردن قفل دستگاه توسط کاربر اجرا شود.

نکته: در طول بوت مستقیم ، یک اکتیویتی در برنامه شما فقط می‌تواند به داده‌هایی که در حافظه محافظت‌شده دستگاه ذخیره شده‌اند، دسترسی داشته باشد.

مقدار پیش‌فرض "false" است.

android:documentLaunchMode
مشخص می‌کند که چگونه یک نمونه جدید از یک فعالیت هر بار که اجرا می‌شود به یک وظیفه اضافه شود. این ویژگی به کاربر اجازه می‌دهد چندین سند از یک برنامه مشابه را در صفحه Recents نمایش دهد.

این ویژگی چهار مقدار دارد که وقتی کاربر سندی را با برنامه باز می‌کند، اثرات زیر را ایجاد می‌کنند:

ارزش توضیحات
"intoExisting" سیستم به دنبال وظیفه‌ای می‌گردد که ComponentName و آدرس داده‌ی intent پایه‌اش با نام‌های intent راه‌اندازی‌شده مطابقت داشته باشد. اگر سیستم چنین وظیفه‌ای را پیدا کند، وظیفه را پاک کرده و مجدداً راه‌اندازی می‌کند و activity ریشه فراخوانی onNewIntent(android.content.Intent) را دریافت می‌کند. اگر سیستم چنین وظیفه‌ای را پیدا نکند، سیستم یک وظیفه جدید ایجاد می‌کند.
"always" این فعالیت یک وظیفه جدید برای سند ایجاد می‌کند، حتی اگر سند از قبل باز شده باشد. این همانند تنظیم هر دو پرچم FLAG_ACTIVITY_NEW_DOCUMENT و FLAG_ACTIVITY_MULTIPLE_TASK است.
"none" این فعالیت، وظیفه جدیدی برای فعالیت ایجاد نمی‌کند. این مقدار پیش‌فرض است و فقط زمانی که FLAG_ACTIVITY_NEW_TASK تنظیم شده باشد، وظیفه جدید ایجاد می‌کند. صفحه Recents با فعالیت به طور پیش‌فرض رفتار می‌کند: یک وظیفه واحد را برای برنامه نمایش می‌دهد که از هر فعالیتی که کاربر آخرین بار فراخوانی کرده است، از سر گرفته می‌شود.
"never" حتی اگر اینتنت شامل FLAG_ACTIVITY_NEW_DOCUMENT باشد، اکتیویتی در یک سند جدید اجرا نمی‌شود. تنظیم این مورد، رفتار پرچم‌های FLAG_ACTIVITY_NEW_DOCUMENT و FLAG_ACTIVITY_MULTIPLE_TASK را در صورتی که هر یک از این پرچم‌ها در اکتیویتی تنظیم شده باشند، لغو می‌کند و صفحه Recents یک وظیفه واحد را برای برنامه نمایش می‌دهد که از هر فعالیتی که کاربر آخرین بار فراخوانی کرده است، از سر گرفته می‌شود.

نکته: برای مقادیری غیر از "none" و "never" ، اکتیویتی با launchMode="standard" تعریف می‌شود. اگر این ویژگی مشخص نشده باشد، documentLaunchMode="none" استفاده می‌شود.

android:enabled
اینکه آیا فعالیت می‌تواند توسط سیستم نمونه‌سازی شود یا خیر. اگر بتواند "true" و در غیر این صورت "false" است. مقدار پیش‌فرض "true" است.

عنصر <application> ویژگی enabled به خود را دارد که به تمام اجزای برنامه، از جمله فعالیت‌ها، اعمال می‌شود. ویژگی‌های <application> و <activity> باید هر دو "true" باشند، زیرا هر دو به طور پیش‌فرض هستند تا سیستم بتواند فعالیت را نمونه‌سازی کند. اگر هر کدام "false" باشد، نمی‌توان آن را نمونه‌سازی کرد.

android:enableOnBackInvokedCallback

این پرچم به شما امکان می‌دهد از انیمیشن‌های سیستم پیش‌بینی‌کننده در سطح فعالیت انصراف دهید.

برای غیرفعال کردن انیمیشن‌های پیش‌بینی‌کننده‌ی بازگشت به عقب در سطح فعالیت و دستور دادن به سیستم که فراخوانی‌های API پلتفرم OnBackInvokedCallback نادیده بگیرد، android:enableOnBackInvokedCallback=false را تنظیم کنید.

android:excludeFromRecents

اینکه آیا وظیفه آغاز شده توسط این فعالیت از صفحه Recents حذف شده است یا خیر. یعنی، وقتی این فعالیت، فعالیت ریشه یک وظیفه جدید است، این ویژگی تعیین می‌کند که آیا وظیفه در لیست برنامه‌های اخیر ظاهر می‌شود یا خیر. اگر وظیفه از لیست حذف شده باشد، "true" و اگر شامل شود، "false" است. مقدار پیش‌فرض "false" است.

android:exported

اینکه آیا اکتیویتی می‌تواند توسط کامپوننت‌های برنامه‌های دیگر راه‌اندازی شود یا خیر:

  • اگر "true" ، اکتیویتی برای هر برنامه‌ای قابل دسترسی است و با نام دقیق کلاس خود قابل اجرا است.
  • اگر "false" ، فعالیت فقط می‌تواند توسط اجزای همان برنامه، برنامه‌هایی با شناسه کاربری یکسان یا اجزای سیستم دارای امتیاز بالا راه‌اندازی شود. این مقدار پیش‌فرض زمانی است که هیچ فیلتر intent وجود ندارد.

اگر یک اکتیویتی در برنامه شما شامل فیلترهای intent است، این عنصر را روی "true" تنظیم کنید تا سایر برنامه‌ها بتوانند آن را اجرا کنند. برای مثال، اگر اکتیویتی، اکتیویتی اصلی برنامه است و شامل category android.intent.category.LAUNCHER می‌شود.

اگر این عنصر روی "false" تنظیم شده باشد و یک برنامه سعی کند activity را شروع کند، سیستم یک ActivityNotFoundException صادر می‌کند.

این ویژگی تنها راه برای محدود کردن نمایش یک فعالیت به سایر برنامه‌ها نیست. مجوزها همچنین برای محدود کردن موجودیت‌های خارجی که می‌توانند فعالیت را فراخوانی کنند، استفاده می‌شوند. به ویژگی permission مراجعه کنید.

android:finishOnTaskLaunch
آیا یک نمونه موجود از اکتیویتی، به جز اکتیویتی ریشه، هنگامی که کاربر با انتخاب وظیفه در صفحه اصلی، آن را دوباره اجرا می‌کند، خاموش می‌شود یا خیر. اگر خاموش باشد، "true" و در غیر این صورت "false" است. مقدار پیش‌فرض "false" است.

اگر این ویژگی و allowTaskReparenting هر دو "true" باشند، این ویژگی بر دیگری برتری دارد. وابستگی فعالیت نادیده گرفته می‌شود. فعالیت دوباره والد نمی‌شود، بلکه از بین می‌رود.

اگر FLAG_ACTIVITY_RESET_TASK_IF_NEEDED تنظیم نشده باشد، این ویژگی نادیده گرفته می‌شود.

android:hardwareAccelerated
اینکه آیا رندرینگ با شتاب‌دهنده سخت‌افزاری برای این فعالیت فعال است یا خیر. اگر فعال باشد "true" و اگر فعال نباشد "false" . مقدار پیش‌فرض "false" است.

در اندروید ۳.۰ و بالاتر، یک رندرکننده OpenGL با شتاب‌دهنده سخت‌افزاری برای برنامه‌ها در دسترس است تا عملکرد بسیاری از عملیات رایج گرافیک دوبعدی را بهبود بخشد. هنگامی که رندرکننده با شتاب‌دهنده سخت‌افزاری فعال باشد، اکثر عملیات در Canvas، Paint، Xfermode، ColorFilter، Shader و Camera شتاب می‌گیرند.

این امر منجر به انیمیشن‌های روان‌تر، پیمایش روان‌تر و بهبود کلی پاسخگویی می‌شود، حتی برای برنامه‌هایی که صراحتاً از کتابخانه‌های OpenGL این فریم‌ورک استفاده نمی‌کنند. به دلیل افزایش منابع مورد نیاز برای فعال کردن شتاب‌دهنده سخت‌افزاری، برنامه شما رم بیشتری مصرف می‌کند.

همه عملیات OpenGL 2D شتاب نمی‌گیرند. اگر رندرکننده سخت‌افزاری شتاب‌دهنده را فعال می‌کنید، آزمایش کنید که آیا برنامه شما می‌تواند بدون خطا از رندرکننده استفاده کند یا خیر.

android:icon

آیکونی که نشان‌دهنده‌ی فعالیت است. این آیکون زمانی به کاربران نمایش داده می‌شود که نمایشی از فعالیت روی صفحه مورد نیاز باشد. برای مثال، آیکون‌های مربوط به فعالیت‌هایی که وظایف را آغاز می‌کنند در پنجره‌ی لانچر نمایش داده می‌شوند. این آیکون اغلب با یک برچسب همراه است؛ برای اطلاعات مربوط به برچسب، به ویژگی android:label مراجعه کنید.

این ویژگی به عنوان مرجعی برای یک منبع قابل ترسیم که شامل تعریف تصویر است، تنظیم می‌شود. اگر تنظیم نشود، از آیکون مشخص شده برای کل برنامه به جای آن استفاده می‌شود. برای اطلاعات بیشتر، به ویژگی icon عنصر <application> مراجعه کنید.

آیکون اکتیویتی، چه اینجا تنظیم شود و چه توسط عنصر <application> ، آیکون پیش‌فرض برای تمام فیلترهای اینتنت اکتیویتی نیز هست. برای اطلاعات بیشتر، به ویژگی icon عنصر <intent-filter> مراجعه کنید.

android:immersive
حالت فراگیر (immersive mode) را برای فعالیت فعلی تنظیم می‌کند. اگر مقدار آن "true" باشد، عضو ActivityInfo.flags همیشه بیت FLAG_IMMERSIVE خود را تنظیم می‌کند، حتی اگر حالت فراگیر در زمان اجرا با استفاده از متد setImmersive() تغییر کند.
android:intentMatchingFlags

از این ویژگی برای تنظیم دقیق نحوه تطبیق اهداف ورودی سیستم با اجزای برنامه استفاده کنید. به طور پیش‌فرض، هیچ قانون تطبیق خاصی اعمال نمی‌شود.

مقدار تنظیم‌شده روی برچسب <activity> مقدار تنظیم‌شده روی برچسب <application> را لغو می‌کند.

مقدار باید یک یا چند مورد از پرچم‌های زیر باشد که با ' | ' از هم جدا شده‌اند:

پرچم توضیحات
none تمام قوانین تطبیق ویژه را برای ورودی‌های ورودی غیرفعال می‌کند. هنگام تعیین چندین پرچم، مقادیر متناقض با دادن اولویت به پرچم none حل می‌شوند.
enforceIntentFilter

تطبیق سختگیرانه‌تری را برای اهداف ورودی اعمال می‌کند:

  • اهداف صریح باید با فیلتر هدف کامپوننت هدف مطابقت داشته باشند.
  • اینتنت‌های بدون اکشن با هیچ فیلتر اینتنتی مطابقت ندارند.
allowNullAction

قوانین تطبیق را آسان می‌کند تا به intent های بدون اکشن اجازه تطبیق داده شود. این پرچم همراه با enforceIntentFilter برای دستیابی به رفتار زیر استفاده می‌شود:

  • اهداف صریح باید با فیلتر هدف کامپوننت هدف مطابقت داشته باشند.
  • اینتنت‌های بدون اکشن مجاز به مطابقت با هر فیلتر اینتنتی هستند.

برای اطلاعات بیشتر، به بخش « اهداف امن‌تر» در تغییرات رفتاری اندروید ۱۶ (سطح API ۳۶) مراجعه کنید.

android:label

یک برچسب قابل خواندن توسط کاربر برای فعالیت. این برچسب هنگامی که فعالیت به کاربر نمایش داده می‌شود، روی صفحه نمایش داده می‌شود. اغلب همراه با آیکون فعالیت نمایش داده می‌شود. اگر این ویژگی تنظیم نشده باشد، از برچسب تنظیم شده برای کل برنامه به جای آن استفاده می‌شود. به ویژگی label عنصر <application> مراجعه کنید.

برچسب فعالیت، چه در اینجا و چه توسط عنصر <application> تنظیم شود، برچسب پیش‌فرض برای همه فیلترهای اینتنت فعالیت نیز هست. برای اطلاعات بیشتر، به ویژگی label عنصر <intent-filter> مراجعه کنید.

این برچسب به عنوان مرجعی برای یک منبع رشته‌ای تنظیم شده است تا بتوان آن را مانند سایر رشته‌ها در رابط کاربری بومی‌سازی کرد. با این حال، برای راحتی شما در حین توسعه برنامه، می‌توانید آن را به عنوان یک رشته خام نیز تنظیم کنید.

android:launchMode

دستورالعملی برای نحوه‌ی راه‌اندازی اکتیویتی. پنج حالت وجود دارد که در رابطه با پرچم‌های اکتیویتی (ثابت‌های FLAG_ACTIVITY_* ) در اشیاء Intent کار می‌کنند تا مشخص کنند وقتی اکتیویتی برای مدیریت یک 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 در intent قرار دارد.

موارد استفاده حالت راه اندازی موارد متعدد؟ نظرات
راه‌اندازی‌های عادی برای اکثر فعالیت‌ها "standard" بله پیش‌فرض. سیستم همیشه یک نمونه جدید از اکتیویتی را در وظیفه هدف ایجاد می‌کند و اینتنت را به آن هدایت می‌کند.
"singleTop" مشروط اگر نمونه‌ای از اکتیویتی از قبل در بالای وظیفه هدف وجود داشته باشد، سیستم به جای ایجاد یک نمونه جدید از اکتیویتی، اینتنت را از طریق فراخوانی متد onNewIntent() به آن نمونه هدایت می‌کند.
پرتاب‌های تخصصی
(برای استفاده عمومی توصیه نمی‌شود)
"singleTask" مشروط سیستم، اکتیویتی را در ریشه یک وظیفه جدید ایجاد می‌کند یا آن را در یک وظیفه موجود با همان وابستگی قرار می‌دهد. اگر نمونه‌ای از اکتیویتی از قبل وجود داشته باشد و در ریشه وظیفه باشد، سیستم به جای ایجاد یک نمونه جدید، اینتنت را از طریق فراخوانی متد onNewIntent() به نمونه موجود هدایت می‌کند.
"singleInstance" خیر همانند "singleTask" است، با این تفاوت که سیستم هیچ فعالیت دیگری را در وظیفه‌ای که نمونه را در خود نگه می‌دارد، اجرا نمی‌کند. فعالیت همیشه تنها و تنها عضو وظیفه خود است.
"singleInstancePerTask" مشروط این فعالیت فقط می‌تواند به عنوان فعالیت ریشه وظیفه، اولین فعالیتی که وظیفه را ایجاد کرده است، اجرا شود و بنابراین فقط یک نمونه از این فعالیت در یک وظیفه وجود دارد. با این حال، فعالیت می‌تواند چندین بار در وظایف مختلف نمونه‌سازی شود.

همانطور که در جدول قبل نشان داده شده است، "standard" حالت پیش‌فرض است و برای اکثر انواع فعالیت‌ها مناسب است. "singleTop" نیز یک حالت راه‌اندازی رایج و مفید برای بسیاری از انواع فعالیت‌ها است. حالت‌های دیگر، "singleTask" ، "singleInstance" و "singleInstancePerTask" ، برای اکثر برنامه‌ها مناسب نیستند . آنها منجر به یک مدل تعاملی می‌شوند که احتمالاً برای کاربران ناآشنا است و با اکثر برنامه‌های دیگر بسیار متفاوت است.

صرف نظر از حالت راه‌اندازی که انتخاب می‌کنید، حتماً قابلیت استفاده از فعالیت را در حین راه‌اندازی و هنگام بازگشت به آن از سایر فعالیت‌ها و وظایف با استفاده از دکمه برگشت، آزمایش کنید.

برای اطلاعات بیشتر در مورد حالت‌های راه‌اندازی و تعامل آنها با پرچم‌های Intent ، به Tasks و back Stack مراجعه کنید.

android:lockTaskMode
نحوه نمایش این فعالیت توسط سیستم را هنگامی که دستگاه در حالت قفل کار می‌کند، تعیین می‌کند.

اندروید می‌تواند وظایف را به روشی فراگیر و شبیه کیوسک به نام حالت قفل وظایف اجرا کند. وقتی سیستم در حالت قفل وظایف اجرا می‌شود، کاربران دستگاه معمولاً نمی‌توانند اعلان‌ها را ببینند، به برنامه‌های غیرمجاز دسترسی پیدا کنند یا به صفحه اصلی برگردند، مگر اینکه برنامه Home در لیست مجاز باشد.

فقط برنامه‌هایی که توسط کنترل‌کننده سیاست دستگاه (DPC) در فهرست مجاز قرار گرفته‌اند، می‌توانند در حالت قفل وظیفه اجرا شوند. با این حال، برنامه‌های سیستمی و ممتاز می‌توانند بدون قرار گرفتن در فهرست مجاز، در حالت قفل وظیفه اجرا شوند.

این مقدار می‌تواند هر یک از مقادیر رشته‌ای R.attr.lockTaskMode زیر باشد:

ارزش توضیحات
"normal" مقدار پیش‌فرض. این مقدار پیش‌فرض است. وظایف در حالت قفل اجرا نمی‌شوند، اما می‌توان با فراخوانی startLockTask() آنها را در آنجا قرار داد.
"never"

وظایف در حالت lockTask اجرا نمی‌شوند و کاربر دستگاه نمی‌تواند این وظایف را از صفحه Recents پین کند.

توجه: این حالت فقط برای برنامه‌های سیستمی و دارای امتیاز ویژه در دسترس است. برنامه‌های بدون امتیاز ویژه با این مقدار به عنوان normal در نظر گرفته می‌شوند.

"if_whitelisted" اگر DPC این بسته را با استفاده از DevicePolicyManager.setLockTaskPackages() مجاز کند، این حالت مشابه always است، با این تفاوت که اگر آخرین وظیفه قفل شده باشد، فعالیت قبل از اینکه بتواند به پایان برسد، باید stopLockTask() را فراخوانی کند. اگر DPC این بسته را مجاز نکند، این حالت مشابه normal است.
"always"

وظایفی که در این فعالیت ریشه دارند، همیشه در حالت وظیفه قفل اجرا می‌شوند. اگر سیستم هنگام اجرای این وظیفه از قبل در حالت وظیفه قفل باشد، وظیفه جدید بر روی وظیفه فعلی اجرا می‌شود. وظایفی که در این حالت اجرا می‌شوند می‌توانند با فراخوانی finish() از حالت وظیفه قفل خارج شوند.

توجه: این حالت فقط برای برنامه‌های سیستمی و دارای امتیاز ویژه در دسترس است. برنامه‌های بدون امتیاز ویژه با این مقدار به عنوان normal در نظر گرفته می‌شوند.

این ویژگی در API سطح ۲۳ معرفی شد.

android:maxRecents
حداکثر تعداد وظایفی که در صفحه Recents به این فعالیت ارجاع داده می‌شوند. وقتی به این تعداد ورودی برسیم، سیستم آخرین نمونه‌ای که اخیراً کمتر استفاده شده را از صفحه Recents حذف می‌کند. مقادیر معتبر، اعداد صحیح از ۱ تا ۵۰ یا ۱ تا ۲۵ در دستگاه‌های با حافظه کم هستند. صفر نامعتبر است. مقدار پیش‌فرض ۱۶ است.
android:maxAspectRatio

حداکثر نسبت ابعادی که فعالیت پشتیبانی می‌کند.

اگر برنامه روی دستگاهی با نسبت تصویر عریض‌تر اجرا شود، سیستم به‌طور خودکار برنامه را در کادر قرار می‌دهد و بخش‌هایی از صفحه را بلااستفاده می‌گذارد تا برنامه بتواند با حداکثر نسبت تصویر مشخص‌شده اجرا شود.

حداکثر نسبت ابعاد به صورت شکل اعشاری از تقسیم خارج قسمت طول دستگاه بر طول کوتاه‌تر آن بیان می‌شود. برای مثال، اگر حداکثر نسبت ابعاد 7:3 باشد، مقدار این ویژگی را روی 2.33 تنظیم کنید.

در دستگاه‌های غیرپوشیدنی، مقدار این ویژگی باید ۱.۳۳ یا بیشتر باشد. در دستگاه‌های پوشیدنی، باید ۱.۰ یا بیشتر باشد. در غیر این صورت، سیستم مقدار تعیین‌شده را نادیده می‌گیرد.

برای اطلاعات بیشتر در مورد این ویژگی، به R.attr.maxAspectRatio مراجعه کنید.

android:minAspectRatio

حداقل نسبت ابعادی که فعالیت پشتیبانی می‌کند.

اگر برنامه روی دستگاهی با نسبت تصویر باریک‌تر اجرا شود، سیستم به‌طور خودکار برنامه را در کادر قرار می‌دهد و بخش‌هایی از صفحه را بلااستفاده می‌گذارد تا برنامه بتواند با حداقل نسبت تصویر مشخص‌شده اجرا شود.

حداقل نسبت ابعاد به صورت اعشاری از تقسیم خارج قسمت طول دستگاه بر طول کوتاه‌تر آن بیان می‌شود. برای مثال، اگر نسبت ابعاد نمایشگر ۴:۳ است، حداقل نسبت ابعاد را روی ۱.۳۳ تنظیم کنید.

مقدار باید بزرگتر یا مساوی ۱.۰ باشد، در غیر این صورت سیستم مقدار تعیین شده را نادیده می‌گیرد.

برای اطلاعات بیشتر در مورد این ویژگی، به R.attr.minAspectRatio مراجعه کنید.

android:multiprocess
آیا می‌توان نمونه‌ای از اکتیویتی را در فرآیند کامپوننتی که آن را آغاز کرده است، راه‌اندازی کرد یا خیر. اگر امکان‌پذیر باشد، "true" و در غیر این صورت "false" است. مقدار پیش‌فرض "false" است.

معمولاً، یک نمونه جدید از یک فعالیت در فرآیند برنامه‌ای که آن را تعریف کرده است، راه‌اندازی می‌شود، بنابراین همه نمونه‌های فعالیت در همان فرآیند اجرا می‌شوند. با این حال، اگر این پرچم روی "true" تنظیم شود، نمونه‌های فعالیت می‌توانند در چندین فرآیند اجرا شوند و به سیستم اجازه می‌دهند در هر کجا که از آنها استفاده می‌شود، نمونه‌هایی ایجاد کند، مشروط بر اینکه مجوزها به آن اجازه دهند - چیزی که تقریباً هرگز ضروری یا مطلوب نیست.

android:name
نام کلاسی که فعالیت را پیاده‌سازی می‌کند، یک زیرکلاس از Activity . مقدار ویژگی معمولاً یک نام کلاس کاملاً واجد شرایط است، مانند "com.example.project.ExtracurricularActivity" . با این حال، به عنوان یک اختصار، اگر اولین کاراکتر نام یک نقطه باشد، مانند ".ExtracurricularActivity" ، به فضای نام مشخص شده در فایل build.gradle اضافه می‌شود.

پس از انتشار برنامه، این نام را تغییر ندهید ، مگر اینکه android:exported ="false" را تنظیم کرده باشید. هیچ نام پیش‌فرضی وجود ندارد. نام باید مشخص شود.

android:noHistory
اینکه آیا فعالیت از پشته فعالیت حذف شده و پایان یافته است یا خیر، با فراخوانی متد finish() آن، زمانی که کاربر از آن خارج می‌شود و دیگر روی صفحه نمایش قابل مشاهده نیست. اگر پایان یافته باشد "true" و در غیر این صورت "false" است. مقدار پیش‌فرض "false" است.

مقدار "true" به این معنی است که اکتیویتی هیچ ردی از خود به جا نمی‌گذارد. در پشته اکتیویتی برای آن وظیفه باقی نمی‌ماند، بنابراین کاربر قادر به بازگشت به آن نیست. در این حالت، اگر اکتیویتی دیگری را برای نتیجه‌ای از این اکتیویتی شروع کنید، onActivityResult() هرگز فراخوانی نمی‌شود.

این ویژگی در API سطح ۳ معرفی شد.

android:parentActivityName
نام کلاس والد منطقی اکتیویتی. نام در اینجا باید با نام کلاس داده شده به ویژگی android:name عنصر <activity> مربوطه مطابقت داشته باشد.

سیستم این ویژگی را می‌خواند تا مشخص کند وقتی کاربر دکمه‌ی «بالا» را در نوار عملیات لمس می‌کند، کدام فعالیت را شروع کند. سیستم همچنین می‌تواند از این اطلاعات برای ترکیب مجموعه‌ای از فعالیت‌ها با TaskStackBuilder استفاده کند.

برای پشتیبانی از سطوح API 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>

برای اطلاعات بیشتر در مورد اعلام فعالیت والدین برای پشتیبانی از ناوبری بالا، بخش «ارائه ناوبری بالا» را مطالعه کنید.

این ویژگی در API سطح ۱۶ معرفی شد.

android:persistableMode

تعریف می‌کند که چگونه یک نمونه از یک فعالیت در یک وظیفه‌ی حاوی آن، در طول راه‌اندازی مجدد دستگاه، حفظ شود.

اگر فعالیت ریشه یک وظیفه، مقدار این ویژگی را برابر با persistRootOnly قرار دهد، فقط فعالیت ریشه حفظ می‌شود. در غیر این صورت، فعالیت‌هایی که در پشته پشتی وظیفه بالاتر هستند بررسی می‌شوند؛ هر یک از این فعالیت‌ها که مقدار این ویژگی را برابر با persistAcrossReboots قرار دهند، حفظ می‌شوند.

اگر از این ویژگی استفاده می‌کنید، باید مقدار آن را روی یکی از موارد زیر تنظیم کنید:

ارزش توضیحات
persistRootOnly

مقدار پیش‌فرض. وقتی سیستم دوباره راه‌اندازی می‌شود، وظیفه فعالیت حفظ می‌شود، اما فقط از هدف راه‌اندازی فعالیت ریشه استفاده می‌شود.

وقتی هدف راه‌اندازی برنامه شما، اکتیویتی ریشه برنامه شما را بارگذاری می‌کند، اکتیویتی شیء PersistableBundle را دریافت نمی‌کند. بنابراین، onSaveInstanceState() برای حفظ وضعیت اکتیویتی ریشه برنامه خود در طول راه‌اندازی مجدد دستگاه استفاده نکنید.

توجه: این مقدار ویژگی فقط در صورتی بر رفتار برنامه شما تأثیر می‌گذارد که روی فعالیت ریشه برنامه شما تنظیم شده باشد.

persistAcrossReboots

وضعیت این فعالیت، به همراه وضعیت هر فعالیت بالاتر در پشته پشتی که ویژگی persistableMode خود را روی persistAcrossReboots تنظیم کرده است، حفظ می‌شود. اگر یک فعالیت ویژگی persistableMode که روی persistAcrossReboots تنظیم شده است را نداشته باشد، یا اگر با استفاده از پرچم Intent.FLAG_ACTIVITY_NEW_DOCUMENT راه‌اندازی شده باشد، آن فعالیت، به همراه تمام فعالیت‌های بالاتر در پشته پشتی، حفظ نمی‌شوند.

وقتی یک intent در برنامه شما، activity ای را بارگذاری می‌کند که ویژگی persistableMode آن روی persistAcrossReboots تنظیم شده است، activity یک شیء PersistableBundle را در متد onCreate() خود دریافت می‌کند. بنابراین، می‌توانید از onSaveInstanceState() برای حفظ وضعیت یک activity در طول راه‌اندازی مجدد دستگاه استفاده کنید، مادامی که ویژگی persistableMode آن روی persistAcrossReboots تنظیم شده باشد.

نکته: مقدار این ویژگی، حتی اگر روی اکتیویتی دیگری غیر از اکتیویتی ریشه برنامه شما تنظیم شده باشد، بر رفتار برنامه شما تأثیر می‌گذارد.

persistNever

وضعیت فعالیت ذخیره نمی‌شود.

توجه: این مقدار ویژگی فقط در صورتی بر رفتار برنامه شما تأثیر می‌گذارد که روی فعالیت ریشه برنامه شما تنظیم شده باشد.

این ویژگی در API سطح ۲۱ معرفی شد.

android:permission
نام مجوزی که کلاینت‌ها برای راه‌اندازی اکتیویتی یا دریافت پاسخ آن به یک اینتنت باید داشته باشند. اگر به فراخوانی‌کننده‌ی startActivity() یا startActivityForResult() مجوز مشخص‌شده اعطا نشود، اینتنت آن به اکتیویتی تحویل داده نمی‌شود.

اگر این ویژگی تنظیم نشده باشد، مجوز تنظیم شده توسط ویژگی permission عنصر <application> برای فعالیت اعمال می‌شود. اگر هیچ یک از ویژگی‌ها تنظیم نشده باشند، فعالیت توسط مجوز محافظت نمی‌شود.

برای اطلاعات بیشتر در مورد مجوزها، به بخش مجوزها در نمای کلی مانیفست برنامه و نکات امنیتی مراجعه کنید.

android:process

نام فرآیندی که فعالیت در آن اجرا می‌شود. معمولاً تمام اجزای یک برنامه با نام فرآیند پیش‌فرضی که برای برنامه ایجاد شده است، اجرا می‌شوند و نیازی به استفاده از این ویژگی ندارید. اما در صورت لزوم، می‌توانید نام فرآیند پیش‌فرض را با این ویژگی لغو کنید و به شما امکان می‌دهد اجزای برنامه خود را در چندین فرآیند پخش کنید.

اگر نام اختصاص داده شده به این ویژگی با یک دونقطه ( : شروع شود، یک فرآیند جدید، خصوصی برای برنامه، در صورت نیاز ایجاد می‌شود و فعالیت در آن فرآیند اجرا می‌شود.

اگر نام فرآیند با یک کاراکتر کوچک شروع شود، فعالیت در یک فرآیند سراسری با آن نام اجرا می‌شود، مشروط بر اینکه مجوز انجام این کار را داشته باشد. این امر به اجزای برنامه‌های مختلف اجازه می‌دهد تا یک فرآیند را به اشتراک بگذارند و استفاده از منابع را کاهش دهند.

ویژگی process عنصر <application> می‌تواند نام فرآیند پیش‌فرض متفاوتی را برای همه اجزا تعیین کند.

android:relinquishTaskIdentity

اینکه آیا فعالیت، شناسه‌های وظیفه خود را به فعالیتی بالاتر از خود در پشته وظایف واگذار می‌کند یا خیر. وظیفه‌ای که این ویژگی در فعالیت ریشه آن روی "true" تنظیم شده باشد، Intent پایه را با قصد فعالیت بعدی در وظیفه جایگزین می‌کند.

اگر اکتیویتی بعدی نیز این ویژگی را روی "true" تنظیم کرده باشد، آنگاه Intent پایه را به هر اکتیویتی که در همان وظیفه راه‌اندازی می‌شود، می‌دهد. این روند برای هر اکتیویتی ادامه می‌یابد تا زمانی که با اکتیویتی مواجه شود که این ویژگی روی "false" تنظیم شده باشد. مقدار پیش‌فرض "false" است.

این ویژگی که روی "true" تنظیم شده است، به activity اجازه می‌دهد تا از ActivityManager.TaskDescription برای تغییر برچسب‌ها، رنگ‌ها و آیکون‌ها در صفحه Recents استفاده کند.

android:requireContentUriPermissionFromCaller

مجوزهای لازم برای راه‌اندازی این فعالیت هنگام ارسال URIهای محتوا را مشخص می‌کند. مقدار پیش‌فرض none است، به این معنی که هیچ مجوز خاصی لازم نیست. تنظیم این ویژگی، فراخوانی فعالیت را بر اساس مجوزهای فراخوانی‌کننده محدود می‌کند. اگر فراخوانی‌کننده مجوزهای لازم را نداشته باشد، شروع فعالیت از طریق SecurityException رد می‌شود.

توجه داشته باشید که این اعمال برای URI های محتوا درون Intent.getData() ، Intent.EXTRA_STREAM و Intent.getClipData() کار می‌کند.

می‌تواند یک مقدار رشته‌ای باشد، و از '\\;' برای escape کردن کاراکترها استفاده می‌کند، مانند '\\n' یا '\\uxxxx' برای یک کاراکتر یونیکد؛

باید یکی از مقادیر ثابت زیر باشد.

ثابت ارزش توضیحات
هیچ کدام 0 به طور پیش‌فرض، هیچ مجوز خاصی لازم نیست.
خواندن ۱ درخواست‌کننده را مجبور می‌کند تا به URIهای محتوای ارسالی دسترسی خواندن داشته باشد.
بخوانید و بنویسید ۴ درخواست‌کننده را مجبور می‌کند تا به URIهای محتوای ارسالی، هم دسترسی خواندن و هم دسترسی نوشتن داشته باشد.
بخوانیدیا بنویسید ۳ درخواست‌کننده را مجبور می‌کند که به URIهای محتوای ارسالی دسترسی خواندن یا نوشتن داشته باشد.
بنویس ۲ درخواست‌کننده را مجبور می‌کند تا به URIهای محتوای ارسالی دسترسی نوشتن داشته باشد.
android:resizeableActivity

مشخص می‌کند که آیا برنامه از حالت چند پنجره‌ای پشتیبانی می‌کند یا خیر.

می‌توانید این ویژگی را در عنصر <activity> یا <application> تنظیم کنید.

اگر این ویژگی را روی "true" تنظیم کنید، کاربر می‌تواند فعالیت را در حالت‌های تقسیم صفحه و فرم آزاد اجرا کند. اگر این ویژگی را روی "false" تنظیم کنید، برنامه نمی‌تواند برای یک محیط چند پنجره‌ای آزمایش یا بهینه شود. سیستم همچنان می‌تواند فعالیت را در حالت چند پنجره‌ای با اعمال حالت سازگاری قرار دهد.

تنظیم این ویژگی روی "false" تضمین نمی‌کند که هیچ برنامه‌ی دیگری در حالت چند پنجره‌ای روی صفحه، مانند حالت تصویر در تصویر یا در نمایشگرهای دیگر، قابل مشاهده نباشد. بنابراین، تنظیم این پرچم به این معنی نیست که برنامه‌ی شما دسترسی انحصاری به منابع دارد.

اگر برنامه شما سطح API 24 یا بالاتر را هدف قرار داده و مقداری برای این ویژگی تعیین نکرده باشید، مقدار ویژگی به طور پیش‌فرض "true" در نظر گرفته می‌شود.

اگر برنامه شما سطح API 31 یا بالاتر را هدف قرار داده است، این ویژگی در صفحه نمایش‌های کوچک و بزرگ متفاوت عمل می‌کند:

  • صفحه نمایش‌های بزرگ (sw >= 600dp): همه برنامه‌ها از حالت چند پنجره‌ای پشتیبانی می‌کنند. این ویژگی نشان می‌دهد که آیا می‌توان اندازه یک برنامه را تغییر داد یا خیر، نه اینکه آیا برنامه از حالت چند پنجره‌ای پشتیبانی می‌کند یا خیر. اگر resizeableActivity="false" ، برنامه در صورت لزوم برای مطابقت با ابعاد صفحه نمایش، در حالت سازگاری قرار می‌گیرد.
  • صفحات نمایش کوچک (sw < 600dp): اگر resizeableActivity="true" و حداقل عرض و حداقل ارتفاع اکتیویتی در محدوده الزامات چند پنجره‌ای باشند، برنامه از حالت چند پنجره‌ای پشتیبانی می‌کند. اگر resizeableActivity="false" ، برنامه صرف نظر از حداقل عرض و ارتفاع اکتیویتی، از حالت چند پنجره‌ای پشتیبانی نمی‌کند.

مقدار فعالیت ریشه یک وظیفه به تمام فعالیت‌های اضافی که در آن وظیفه راه‌اندازی می‌شوند اعمال می‌شود. یعنی، اگر فعالیت ریشه یک وظیفه قابل تغییر اندازه باشد، سیستم با تمام فعالیت‌های دیگر در آن وظیفه به عنوان فعالیت‌های قابل تغییر اندازه رفتار می‌کند. اگر فعالیت ریشه قابل تغییر اندازه نباشد، سایر فعالیت‌های موجود در آن وظیفه نیز قابل تغییر اندازه نخواهند بود.

نکته: مقدار فعالیت ریشه یک وظیفه به تمام فعالیت‌های اضافی که در آن وظیفه اجرا می‌شوند اعمال می‌شود. یعنی، اگر فعالیت ریشه یک وظیفه قابل تغییر اندازه باشد، سیستم با تمام فعالیت‌های دیگر در آن وظیفه به عنوان فعالیت‌های قابل تغییر اندازه رفتار می‌کند. اگر فعالیت ریشه قابل تغییر اندازه نباشد، سایر فعالیت‌های موجود در آن وظیفه نیز قابل تغییر اندازه نخواهند بود.

android:screenOrientation

جهت‌گیری مورد درخواست برای فعالیت.

وقتی یک فعالیت تمام صفحه را پر می‌کند، جهت درخواستی به عنوان پیشنهادی برای تغییر جهت در آن صفحه عمل می‌کند تا با مقدار درخواستی مطابقت داشته باشد. این می‌تواند منجر به جهتی شود که با جهت فیزیکی صفحه در فضا متفاوت است و کاربر را ملزم به چرخاندن دستگاه برای ادامه استفاده از برنامه می‌کند. در اندروید ۱۲ (سطح API ۳۱) و بالاتر، تولیدکنندگان دستگاه می‌توانند صفحه‌های دستگاه (مانند صفحه نمایش به اندازه تبلت یک دستگاه تاشو) را طوری پیکربندی کنند که این پیشنهاد را نادیده بگیرند و در عوض یک فعالیت را مجبور کنند که در جهت دلخواه کاربر در دستگاه قرار گیرد. این امر منجر به تطابق جهت فعالیت با جهت درخواستی بدون نیاز به چرخاندن فیزیکی دستگاه توسط کاربر می‌شود.

در حالت چند پنجره‌ای، جهت درخواستی به عنوان پیشنهادی برای جهت کلی عمل نمی‌کند. اگر فعالیت به صورت Letterboxed باشد، جهت درخواستی بر Letterboxing اعمال شده بر فعالیت تأثیر می‌گذارد.

مقدار می‌تواند هر یک از رشته‌های زیر باشد:

"unspecified" مقدار پیش‌فرض. سیستم جهت‌گیری را انتخاب می‌کند. سیاستی که استفاده می‌کند و بنابراین انتخاب‌های انجام‌شده در زمینه‌های خاص، ممکن است از دستگاهی به دستگاه دیگر متفاوت باشد.
"behind" همان جهت‌گیری فعالیتی که بلافاصله در زیر آن در پشته فعالیت قرار دارد.
"landscape" جهت افقی (عرض نمایشگر از ارتفاع آن بیشتر است).
"portrait" جهت عمودی (ارتفاع صفحه نمایش بیشتر از عرض آن است).
"reverseLandscape" جهت‌گیری افقی در جهت مخالف منظره معمولی. در سطح API 9 اضافه شد.
"reversePortrait" جهت‌گیری عمودی در جهت مخالف حالت عمودی معمولی. در سطح API 9 اضافه شد.
"sensorLandscape" جهت افقی، اما می‌تواند بسته به حسگر دستگاه، افقی معمولی یا معکوس باشد. حسگر حتی اگر کاربر چرخش مبتنی بر حسگر را قفل کرده باشد، استفاده می‌شود. در سطح API 9 اضافه شده است.
"sensorPortrait" جهت عمودی، اما می‌تواند بسته به حسگر دستگاه، عمودی معمولی یا عمودی معکوس باشد. این حسگر حتی اگر کاربر چرخش مبتنی بر حسگر را قفل کرده باشد، استفاده می‌شود. با این حال، بسته به پیکربندی دستگاه، چرخش وارونه ممکن است مجاز نباشد. در سطح API 9 اضافه شده است.
"userLandscape" جهت افقی، اما می‌تواند بسته به حسگر دستگاه و ترجیح کاربر، به صورت عادی یا افقی معکوس باشد. در سطح API 18 اضافه شده است.
"userPortrait" جهت عمودی، اما می‌تواند بسته به حسگر دستگاه و ترجیح کاربر، به صورت عادی یا عمودی معکوس باشد. با این حال، بسته به پیکربندی دستگاه، چرخش وارونه ممکن است مجاز نباشد. در سطح API 18 اضافه شده است.
"sensor" حسگر جهت‌یابی دستگاه، جهت را تعیین می‌کند. جهت نمایشگر به نحوه‌ی نگه‌داشتن دستگاه توسط کاربر بستگی دارد. با چرخش دستگاه توسط کاربر، جهت تغییر می‌کند. با این حال، برخی از دستگاه‌ها به طور پیش‌فرض در هر چهار جهت ممکن نمی‌چرخند. برای استفاده از هر چهار جهت، از "fullSensor" استفاده کنید. این حسگر حتی اگر کاربر چرخش مبتنی بر حسگر را قفل کرده باشد، استفاده می‌شود.
"fullSensor" حسگر جهت‌یابی دستگاه، جهت هر یک از چهار جهت را تعیین می‌کند. این مشابه "sensor" است، با این تفاوت که صرف نظر از آنچه دستگاه معمولاً پشتیبانی می‌کند، امکان هر یک از چهار جهت ممکن صفحه نمایش را فراهم می‌کند. به عنوان مثال، برخی از دستگاه‌ها معمولاً از حالت عمودی معکوس یا افقی معکوس استفاده نمی‌کنند، اما این قابلیت این جهت‌گیری‌ها را فعال می‌کند. در سطح API 9 اضافه شده است.
"nosensor" جهت‌گیری بدون ارجاع به حسگر جهت‌یابی فیزیکی تعیین می‌شود. این حسگر نادیده گرفته می‌شود، بنابراین نمایشگر بر اساس نحوه‌ی حرکت دستگاه توسط کاربر نمی‌چرخد.
"user" جهت‌گیری ترجیحی فعلی کاربر.
"fullUser" اگر کاربر چرخش مبتنی بر حسگر را قفل کرده باشد، این تابع مانند user عمل می‌کند، در غیر این صورت مانند fullSensor عمل می‌کند و هر یک از چهار جهت‌گیری ممکن صفحه را مجاز می‌داند. در سطح API 18 اضافه شده است.
"locked" جهت را روی چرخش فعلی‌اش، هر چه که باشد، قفل می‌کند. در سطح API 18 اضافه شده است.

نکته: وقتی یکی از مقادیر landscape یا portrait را تعریف می‌کنید، این مقدار به عنوان یک الزام سخت برای جهتی که activity در آن اجرا می‌شود، در نظر گرفته می‌شود. مقداری که تعریف می‌کنید، فیلتر کردن توسط سرویس‌هایی مانند Google Play را فعال می‌کند، بنابراین برنامه شما فقط برای دستگاه‌هایی که از جهت مورد نیاز activity های شما پشتیبانی می‌کنند، در دسترس است. به عنوان مثال، اگر شما یکی از مقادیر "landscape" ، "reverseLandscape" یا "sensorLandscape" را تعریف کنید، برنامه شما فقط برای دستگاه‌هایی که از جهت گیری landscape پشتیبانی می‌کنند، در دسترس خواهد بود.

همچنین به صراحت اعلام کنید که برنامه شما به جهت عمودی یا افقی با عنصر <uses-feature> نیاز دارد، مانند <uses-feature android:name="android.hardware.screen.portrait"/> . این یک رفتار فیلترینگ است که توسط گوگل پلی و سایر سرویس‌هایی که از آن پشتیبانی می‌کنند ارائه می‌شود و خود پلتفرم کنترلی بر نصب برنامه شما در زمانی که دستگاه فقط از جهت‌های خاصی پشتیبانی می‌کند، ندارد.

android:showForAllUsers

اینکه آیا فعالیت زمانی نمایش داده شود که کاربر فعلی دستگاه با کاربری که فعالیت را اجرا کرده متفاوت باشد. می‌توانید این ویژگی را روی یک مقدار تحت‌اللفظی مانند "true" یا "false" تنظیم کنید، یا می‌توانید این ویژگی را روی یک ویژگی منبع یا تم که حاوی یک مقدار بولی است تنظیم کنید.

این ویژگی در API سطح ۲۳ اضافه شده است.

android:stateNotNeeded
آیا می‌توان فعالیت را بدون ذخیره وضعیت آن خاتمه داد و با موفقیت مجدداً راه‌اندازی کرد؟ اگر بتوان آن را بدون ارجاع به وضعیت قبلی‌اش مجدداً راه‌اندازی کرد، مقدار "true" و اگر وضعیت قبلی آن مورد نیاز باشد، مقدار « "false" » را انتخاب کنید. مقدار پیش‌فرض "false" است.

معمولاً قبل از اینکه یک فعالیت به طور موقت برای صرفه‌جویی در منابع خاموش شود، متد onSaveInstanceState() آن فراخوانی می‌شود. این متد وضعیت فعلی فعالیت را در یک شیء Bundle ذخیره می‌کند که سپس هنگام راه‌اندازی مجدد فعالیت به onCreate() ارسال می‌شود. اگر این ویژگی روی "true" تنظیم شود، ممکن است onSaveInstanceState() فراخوانی نشود و onCreate() به جای Bundle ، مقدار null ارسال می‌شود، همانطور که در اولین شروع فعالیت این اتفاق می‌افتد.

تنظیم "true" به این معنی است که فعالیت می‌تواند بدون حفظ وضعیت، مجدداً راه‌اندازی شود. برای مثال، فعالیتی که صفحه اصلی را نمایش می‌دهد از این تنظیم استفاده می‌کند تا مطمئن شود که اگر به هر دلیلی از کار افتاد، حذف نمی‌شود.

android:supportsPictureInPicture

مشخص می‌کند که آیا اکتیویتی از نمایش تصویر در تصویر پشتیبانی می‌کند یا خیر.

android:taskAffinity

وظیفه‌ای که فعالیت به آن وابستگی دارد. فعالیت‌هایی که وابستگی یکسانی دارند، از نظر مفهومی به یک وظیفه و از دیدگاه کاربر به یک «کاربرد» تعلق دارند. وابستگی یک وظیفه توسط وابستگی فعالیت ریشه آن تعیین می‌شود.

این وابستگی دو چیز را تعیین می‌کند: وظیفه‌ای که فعالیت به آن والد می‌شود (به ویژگی allowTaskReparenting مراجعه کنید) و وظیفه‌ای که فعالیت را هنگام راه‌اندازی با پرچم FLAG_ACTIVITY_NEW_TASK در خود جای می‌دهد.

به طور پیش‌فرض، همه فعالیت‌های یک برنامه دارای وابستگی یکسانی هستند. می‌توانید این ویژگی را برای گروه‌بندی متفاوت آنها تنظیم کنید و حتی فعالیت‌های تعریف شده در برنامه‌های مختلف را در یک وظیفه قرار دهید. برای مشخص کردن اینکه فعالیت هیچ وابستگی به هیچ وظیفه‌ای ندارد، آن را روی یک رشته خالی تنظیم کنید.

اگر این ویژگی تنظیم نشده باشد، فعالیت، وابستگی تنظیم شده برای برنامه را به ارث می‌برد. به ویژگی taskAffinity عنصر <application> مراجعه کنید. نام وابستگی پیش‌فرض برای یک برنامه، فضای نامی است که در فایل build.gradle تنظیم شده است.

android:theme
ارجاعی به یک منبع سبک که یک تم کلی برای فعالیت تعریف می‌کند. این به طور خودکار زمینه فعالیت را برای استفاده از این theme تنظیم می‌کند و همچنین ممکن است باعث شود انیمیشن‌های "شروع" قبل از شروع فعالیت، برای مطابقت بیشتر با ظاهر واقعی فعالیت، اجرا شوند.

اگر این ویژگی تنظیم نشده باشد، فعالیت، مجموعه تم را برای کل برنامه، از ویژگی theme عنصر <application> به ارث می‌برد. اگر آن ویژگی نیز تنظیم نشده باشد، از تم پیش‌فرض سیستم استفاده می‌شود. برای اطلاعات بیشتر، به بخش سبک‌ها و تم‌ها مراجعه کنید.

android:uiOptions

گزینه‌های اضافی برای رابط کاربری یک فعالیت. باید یکی از مقادیر زیر باشد.

ارزش توضیحات
"none" هیچ گزینه رابط کاربری اضافی وجود ندارد. این پیش‌فرض است.
"splitActionBarWhenNarrow" نواری در پایین صفحه اضافه می‌کند تا موارد عملیاتی را در نوار برنامه ، که به عنوان نوار عملیات نیز شناخته می‌شود، در صورت محدود بودن فضای افقی، مانند حالت عمودی در گوشی، نمایش دهد. به جای تعداد کمی از موارد عملیاتی که در نوار برنامه در بالای صفحه نمایش داده می‌شوند، نوار برنامه به بخش ناوبری بالا و نوار پایین برای موارد عملیاتی تقسیم می‌شود. این بدان معناست که فضای معقولی نه تنها برای موارد عملیاتی، بلکه برای عناصر ناوبری و عنوان در بالا نیز در دسترس قرار می‌گیرد. موارد منو در دو نوار تقسیم نمی‌شوند. آنها همیشه با هم ظاهر می‌شوند.

برای اطلاعات بیشتر در مورد نوار برنامه، به افزودن نوار برنامه مراجعه کنید.

این ویژگی در API سطح ۱۴ اضافه شده است.

android:windowSoftInputMode
نحوه تعامل پنجره اصلی اکتیویتی با پنجره حاوی صفحه کلید نرم افزاری روی صفحه نمایش. تنظیم این ویژگی بر دو چیز تأثیر می‌گذارد:
  • اینکه آیا صفحه‌کلید نرم‌افزاری وقتی فعالیت مورد توجه کاربر قرار می‌گیرد، پنهان است یا قابل مشاهده.
  • اینکه آیا پنجره اصلی فعالیت کوچک‌تر شود تا فضای کافی برای صفحه‌کلید نرم‌افزاری ایجاد شود یا محتویات آن جابه‌جا شوند تا وقتی بخشی از پنجره توسط صفحه‌کلید نرم‌افزاری پوشانده شده است، فوکوس فعلی قابل مشاهده باشد.

این تنظیم باید یکی از مقادیر ذکر شده در جدول زیر یا ترکیبی از یک مقدار "state..." به علاوه یک مقدار "adjust..." باشد. تنظیم چندین مقدار در هر گروه، مانند چندین مقدار "state..." ، نتایج تعریف نشده‌ای دارد. مقادیر منفرد با یک خط عمودی ( | ) از هم جدا می‌شوند، همانطور که در مثال زیر نشان داده شده است:

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

مقادیری که اینجا تنظیم می‌شوند (به غیر از "stateUnspecified" و "adjustUnspecified" ) مقادیر تنظیم شده در قالب را لغو می‌کنند.

ارزش توضیحات
"stateUnspecified" اینکه صفحه‌کلید نرم‌افزاری پنهان باشد یا قابل مشاهده، مشخص نشده است. سیستم حالت مناسبی را انتخاب می‌کند یا به تنظیمات موجود در تم متکی است.

این تنظیم پیش‌فرض برای رفتار صفحه‌کلید نرم‌افزاری است.

"stateUnchanged" وقتی فعالیت مورد نظر آشکار می‌شود، صفحه‌کلید نرم‌افزاری در هر وضعیتی که آخرین بار بوده، چه قابل مشاهده و چه پنهان، باقی می‌ماند.
"stateHidden" صفحه‌کلید نرم‌افزاری زمانی که کاربر فعالیت را انتخاب می‌کند پنهان می‌شود - یعنی زمانی که کاربر به طور مثبت به فعالیت بعدی می‌رود، به جای اینکه هنگام خروج از فعالیت دیگر به عقب برگردد.
"stateAlwaysHidden" وقتی پنجره اصلی اکتیویتی فوکوس ورودی دارد، صفحه‌کلید نرم‌افزاری همیشه پنهان است.
"stateVisible" صفحه‌کلید نرم‌افزاری زمانی قابل مشاهده می‌شود که کاربر فعالیت مورد نظر را انتخاب کند - یعنی زمانی که کاربر به طور مثبت به فعالیت بعدی می‌رود، نه اینکه هنگام خروج از فعالیت دیگر به عقب برگردد.
"stateAlwaysVisible" صفحه‌کلید نرم‌افزاری زمانی قابل مشاهده است که پنجره فوکوس ورودی را دریافت کند.
"adjustUnspecified" اینکه آیا پنجره اصلی فعالیت تغییر اندازه می‌دهد تا فضای کافی برای صفحه‌کلید نرم‌افزاری ایجاد شود یا محتویات پنجره تغییر اندازه می‌دهد تا فوکوس فعلی روی صفحه قابل مشاهده باشد، مشخص نیست. سیستم به طور خودکار یکی از این حالت‌ها را بسته به اینکه آیا محتوای پنجره دارای نمای طرح‌بندی است که می‌تواند محتوای آن را پیمایش کند یا خیر، انتخاب می‌کند. اگر چنین نمایی وجود داشته باشد، اندازه پنجره تغییر می‌کند، با این فرض که پیمایش می‌تواند تمام محتوای پنجره را در یک منطقه کوچکتر قابل مشاهده کند.

این تنظیمات پیش‌فرض برای رفتار پنجره اصلی است.

"adjustResize" پنجره اصلی فعالیت همیشه تغییر اندازه می‌دهد تا فضای کافی برای صفحه‌کلید نرم‌افزاری روی صفحه ایجاد شود.
"adjustPan" اندازه پنجره اصلی فعالیت برای ایجاد فضا برای صفحه‌کلید نرم‌افزاری تغییر نمی‌کند. در عوض، محتویات پنجره به طور خودکار جابجا می‌شوند تا فوکوس فعلی هرگز توسط صفحه‌کلید مسدود نشود و کاربران همیشه بتوانند آنچه را که تایپ می‌کنند ببینند. این به طور کلی مطلوب‌تر از تغییر اندازه نیست، زیرا ممکن است کاربر برای دسترسی و تعامل با قسمت‌های مسدود شده پنجره، نیاز به بستن صفحه‌کلید نرم‌افزاری داشته باشد.
"adjustNothing" پنجره اصلی اکتیویتی برای ایجاد فضا برای صفحه کلید نرم افزاری تغییر اندازه یا جابجا نمی‌شود. اکتیویتی مسئول ایجاد فضا برای صفحه کلید نرم افزاری با استفاده از درج پنجره است. برای اکتیویتی‌هایی که درج پنجره را به درستی مدیریت می‌کنند، این کار بیشترین کنترل را بر نحوه نمایش محتوای پنجره روی صفحه نمایش می‌دهد.

این ویژگی در API سطح ۳ معرفی شد.

معرفی شده در:
API سطح ۱ برای همه ویژگی‌ها به جز noHistory و windowSoftInputMode که در API سطح ۳ اضافه شده‌اند.
همچنین ببینید:
<application>
<activity-alias>