- תחביר:
<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>
- תיאור:
- מצהירה על פעילות (תת-מחלקה
Activity
) מרכיב חלק מממשק המשתמש החזותי של האפליקציה. כל הפעילויות חייב להיות מיוצג על ידי<activity>
רכיבים בקובץ המניפסט. אתרים שלא הוצהרו עליהם, לא מופיעים. על ידי המערכת והם אף פעם לא יופעלו. - :
android:allowEmbedded
-
מציין שניתן להפעיל את הפעילות כצאצא מוטמע של חשבון אחר במיוחד אם הילדים גרים בקונטיינר, למשל
Display
שנמצא בבעלות של פעילות אחרת. לדוגמה, פעילויות שנעשה בהן שימוש להתראות מותאמות אישית מ-Wear, מצהירות על כך כך Wear יכול להציג את הפעילות בזרם ההקשר שלו, שנמצא בתהליך אחר.ערך ברירת המחדל של המאפיין הזה הוא
false
. android:allowTaskReparenting
- אם הפעילות יכולה לעבור מהמשימה שהתחילה אל
המשימה שיש לה עניין לקראתה מועד הבא של המשימה
הצד הקדמי. הערך הוא
"true"
אם הוא יכול לעבור, ו-"false"
אם הוא יכול לעבור המשימה נשארה שבה היא התחילה.אם המאפיין הזה לא מוגדר, הערך שנקבע על ידי
allowTaskReparenting
מאפיין של האלמנט<application>
חל על הפעילות. ערך ברירת המחדל הוא"false"
.בדרך כלל, כשפעילות מתחילה, היא משויכת למשימה הפעילות שהתחילה אותה והיא נשארת שם כל החיים. אפשר להשתמש במאפיין הזה כדי לאלץ את התפקיד שלו להיות הורה מחדש למשימה שהוא יש תחום עניין משותף לגבי המועד שבו המשימה הנוכחית שלו כבר לא מוצגת. בדרך כלל, הוא משמש כדי לגרום לפעילויות של אפליקציה לעבור במשימה הראשית שמשויכת לאותה אפליקציה.
לדוגמה, אם הודעת אימייל מכילה קישור לדף אינטרנט, לחיצה על הקישור מעלה פעילות שיכולה להציג את הדף. הפעילות הזו מוגדר על ידי אפליקציית הדפדפן, אבל הוא מופעל כחלק מהודעת האימייל למשימה הזו. אם הוסבר מחדש במשימת הדפדפן, יופיע מתי בשלב הבא, הדפדפן מגיע לחזית ואינו מופיע כשמשימת האימייל שוב ושוב.
הזיקה לפעילות מוגדרת על ידי מאפיין
taskAffinity
. תחום העניין המשותף של משימה נקבעת על ידי קריאת הזיקה של פעילות השורש שלה. לכן, מעצם הגדרתה, פעילות ברמה הבסיסית היא תמיד משימה עם תחום עניין משותף. מאז פעילויות עם"singleTask"
או"singleInstance"
מצבי הפעלה יכולים להיות רק ברמה הבסיסית (root) של משימה, הורות מחדש מוגבלת ל"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. מאחר שהבאנר מופיע רק במסך הבית, מצוין רק על ידי אפליקציות עם פעילות שמטפלת Intent מסוג
CATEGORY_LEANBACK_LAUNCHER
.מאפיין זה מוגדר כהפניה למשאב ניתן להזזה שמכיל את התמונה, למשל
"@drawable/banner"
. אין מודעת באנר שמוגדרת כברירת מחדל.מידע נוסף זמין במאמר מספקים באנר למסך הבית בקטע 'תחילת העבודה עם אפליקציות לטלוויזיה'.
android:canDisplayOnRemoteDevices
-
מציינת אם הפעילות יכולה להיות מוצגת במכשיר מרוחק, מערכת ההפעלה של Android לא פועלת איתו. הוא חייב להיות ערך בוליאני,
"true"
או"false"
.ערך ברירת המחדל של המאפיין הזה הוא
"true"
. android:clearTaskOnLaunch
- כל הפעילויות יוסרו מהמשימה, מלבד
פעילות של הרמה הבסיסית (root), כשהיא מופעלת מחדש ממסך הבית.
"true"
אם המשימה תמיד מוסרת מהפעילות הבסיסית שלה, וגם"false"
אם לא. ערך ברירת המחדל הוא"false"
. המאפיין הזה הוא בעל משמעות רק עבור פעילויות שמתחילות משימה חדשה - הפעילות הבסיסית. המערכת מתעלמת ממנו בכל הפעילויות האחרות במשימה.כשהערך הוא
"true"
, בכל פעם שהמשתמשים מתחילים את המשימה, מועברים לפעילות השורש שלו ללא קשר לפעולה האחרונה שהם עשו את המשימה, וגם אם הם השתמשו בלחצן 'הקודם' או בלחצן 'דף הבית' כדי להשאיר אותו. כשהערך הוא"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
עד להציג צבעים עזים יותר. אם המכשיר לא תומך ברינדור של מטווח צבעים רחב, אין השפעה. למידע נוסף על עיבוד במצב צבע רחב, ראו שיפור הגרפיקה באמצעות תוכן בצבע רחב.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) כאשר כשזוהה כרטיס SIM שמעדכן את חשבון הניהול (MCC). "mnc"
שינוי בקוד הרשת הסלולרית של IMSI (MNC) כאשר זוהה כרטיס SIM שמעדכנים את ה-MNC. "navigation"
שינוי TA בסוג הניווט (כדור עקיבה או לחצני החיצים). בדרך כלל זה לא קורה. "orientation"
שינוי בכיוון המסך, למשל כשהמשתמש מסובב את המכשיר.
הערה: אם האפליקציה שלכם מטרגטת גם ב-Android מגרסה 3.2 (רמת API 13) ואילך יש הצהרה על ההגדרות של
"screenLayout"
ו-"screenSize"
, כי פריסת המסך וגודל המסך יכול להשתנות כאשר המכשיר עובר בין כיוון לאורך לבין כיוון לרוחב."screenLayout"
שינוי בפריסת המסך, למשל מצב שבו מסך אחר הופך לפעיל. "screenSize"
שינוי בגודל המסך הזמין הנוכחי.
הדבר מייצג שינוי בגודל הזמין כרגע, ביחס ביחס הגובה-רוחב הנוכחי, ולכן הוא משתנה כשהמשתמש עובר לתצוגה לרוחב ולאורך.
נוסף ברמת API 13.
"smallestScreenSize"
שינוי בגודל המסך הפיזי.
הדבר מייצג שינוי בגודל ללא קשר לכיוון, כלומר משתנה כשגודל המסך הפיזי בפועל משתנה, למשל מעבר מסך חיצוני. שינוי בתצורה הזו תואם לשינוי ב
smallestWidth
הגדרה אישית.נוסף ברמת API 13.
"touchscreen"
שינוי במסך המגע. בדרך כלל זה לא קורה. "uiMode"
שינוי במצב ממשק המשתמש, כגון במצב שבו המשתמש ממקם את המכשיר למחשב שולחני או לאביזר עגינה לרכב, או שמצב הלילה משתנה. לקבלת מידע נוסף על המצבים השונים של ממשק המשתמש: UiModeManager
נוסף ברמת API 8.
כל שינויי ההגדרות האלה יכולים להשפיע על ערכי המשאבים שיוצגו על ידי תרגום מכונה. לכן, כאשר
onConfigurationChanged()
נקרא, בדרך כלל יש צורך שוב מאחזרים את כל המשאבים, כולל פריסות תצוגה ופריטים שניתן להזזה, כדי לטפל בשינוי בצורה נכונה.הערה: כדי לטפל בשינויים שקשורים לריבוי חלונות, יש להשתמש גם ב-
"screenLayout"
וגם ב-"smallestScreenSize"
. ריבוי חלונות נתמך ב-Android 7.0 (API ברמה 24) ואילך. android:directBootAware
אם לפעילות יש מוּדעוּת ל-Direct-Boot – כלומר, האם היא יכולה לפעול לפני שהמשתמש מבטל את נעילת המכשיר.
הערה: במהלך הפעלה ישירה, פעילות בתוך האפליקציה יכולה לגשת רק לנתונים שמאוחסנים אחסון מוגן במכשיר.
ערך ברירת המחדל הוא
"false"
.android:documentLaunchMode
- ההגדרה קובעת איך מופע חדש של פעילות מתווסף למשימה בכל פעם שהיא מופעלת.
המאפיין הזה מאפשר למשתמש לנהל כמה מסמכים מאותה האפליקציה
יופיעו במסך 'תוצאות אחרונות'.
למאפיין הזה יש ארבעה ערכים, שיוצרים את ההשפעות הבאות כשהמשתמש פותח מסמך עם האפליקציה:
ערך תיאור "intoExisting"
המערכת תחפש משימה שה- ComponentName
של ה-Intent הבסיסי שלה וה-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
משביתה את החיזוי החוזר ברמת הפעילות או ברמת האפליקציה, בהתאם למיקום שבו הגדרתם את התג, ומורה למערכת להתעלם מקריאות ל-API של הפלטפורמהOnBackInvokedCallback
. android:excludeFromRecents
אם המשימה שהופעלה על ידי הפעילות הזו לא נכללת ב מסך השיחות האחרונות. כלומר, כשהפעילות הזו היא פעילות השורש של פעילות חדשה, המאפיין הזה קובע אם המשימה תופיע ברשימת האפליקציות האחרונות. זו
"true"
אם המשימה מוחרגת מהרשימה."false"
אם כלול. ערך ברירת המחדל הוא"false"
.android:exported
אם ניתן להפעיל את הפעילות על ידי רכיבים של אחרים אפליקציות:
- אם הערך הוא
"true"
, הפעילות נגישה לכל אפליקציה, ואפשר להפעיל אותה לפי הערך המדויק שלה שם המחלקה. - אם הערך הוא
"false"
, אפשר להפעיל את הפעילות רק באמצעות רכיבים של את אותה אפליקציה, אפליקציות עם אותו מזהה משתמש או רכיבי מערכת מוגבלים. זהו ערך ברירת המחדל כשאין מסנני Intent.
אם פעילות באפליקציה שלך כוללת מסנני Intent, צריך להגדיר את הרכיב הזה בתור
"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 עם האצת חומרה זמין לאפליקציות כדי לשפר את הביצועים של גרפיקה דו-ממדית נפוצה ב-AI. כאשר מופעל כלי עיבוד שמואץ באמצעות חומרה, רוב הפעולות ביחידות 'לוח הציור', 'צבע', Xfermode , ColorFilter , Shader ו-מצלמה.
כך מקבלים אנימציות חלקות יותר, גלילה חלקה יותר ושיפורים רספונסיביות באופן כללי, גם לאפליקציות שלא משתמשות באופן מפורש ספריות OpenGL של ה-framework. לאור כמות המשאבים המוגברת שנדרשים כדי: להפעיל את שיפור המהירות באמצעות חומרה, האפליקציה שלך צורכת יותר RAM.
לא כל הפעולות של OpenGL 2D מואצות. אם מפעילים למעבד עם שיפור מהירות באמצעות חומרה, לבדוק אם האפליקציה להשתמש בכלי לרינדור ללא שגיאות.
android:icon
סמל שמייצג את הפעילות. הסמל מוצג למשתמשים כאשר ייצוג של הפעילות נדרש במסך. לדוגמה, סמלים פעילויות שגורמות למשימות מוצגות בחלון של מרכז האפליקציות. לעיתים קרובות לצד הסמל מופיעה תווית. מידע על התווית זמין במאפיין
android:label
.מאפיין זה מוגדר כהפניה למשאב ניתן להזזה שמכיל את הגדרת התמונה. אם היא לא מוגדרת, הסמל שצוין עבור האפליקציה משמש במקום זאת, מידע נוסף זמין במאמר
<application>
המאפייןicon
של הרכיב.סמל הפעילות, אם הוא מוגדר כאן או על ידי
<application>
הוא גם סמל ברירת המחדל לכל מסנני Intent של הפעילות. מידע נוסף זמין במאמר של רכיב<intent-filter>
icon
.android:immersive
- קביעת ההגדרה של מצב עשיר לפעילות הנוכחית. אם הערך הוא
"true"
, לחברActivityInfo.flags
תמיד יש את סיביות שלFLAG_IMMERSIVE
, גם אם המצב העשיר משתנה בזמן הריצה באמצעות ה-methodsetImmersive()
. android:label
תווית של הפעילות שהמשתמש יכול לקרוא. התווית מוצגת במסך כשהפעילות מיוצגת למשתמש. לרוב מוצגת לאורך עם סמל הפעילות. אם המאפיין הזה לא מוגדר, התווית שהוגדרה עבור האפליקציה בכללותה נעשה בו שימוש. לראות את הרכיב
<application>
label
.תווית הפעילות, אם היא מוגדרת כאן או על ידי רכיב
<application>
, הוא גם תווית ברירת מחדל לכל מסנני Intent של הפעילות. מידע נוסף זמין במאמר של רכיב<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"
נמצא תמיד ברמה הבסיסית (root) של משימת הפעילות. כמו כן, המכשיר יכול להכיל רק מופע אחד של פעילות של"singleInstance"
בבת אחת, בזמן אפשר ליצור מופע של פעילות"singleInstancePerTask
מספר פעמים במשימות שונות,FLAG_ACTIVITY_MULTIPLE_TASK
אוFLAG_ACTIVITY_NEW_DOCUMENT
מוגדרת.פעילות עם מצב ההפעלה
"singleTask"
משלבת של"singleInstance"
"singleInstancePerTask"
: ניתן ליצור אובייקטים מרובים של הפעילות זמנים והם יכולים להיות ממוקמים בכל מקום במשימה של אותוtaskAffinity
. עם זאת, המכשיר יכול להכיל רק משימה אחת לאיתור פעילות"singleTask"
ברמה הבסיסית (root) של משימת הפעילות.המצבים
"standard"
ו-"singleTop"
שונים זה מזה מהבחינה אחת: בכל פעם שיש כוונה חדשה עבור"standard"
פעילות, נוצר מופע חדש של המחלקה כדי להגיב לכוונה הזו. כל מכונה מטפלת ב-Intent יחיד. באופן דומה, מופע חדש של פעילות"singleTop"
יכול להיות גם נוצר כדי לטפל בכוונת רכישה חדשה.אבל, אם משימת היעד כבר כוללת מופע קיים של הפעילות בראש המקבץ. מקבל את הכוונה החדשה, שיחת
onNewIntent()
. לא נוצר מכונה חדשה. אחרת – אם מופע קיים של פעילות של"singleTop"
נמצאת במשימת היעד, אבל לא בחלק העליון של הסטאק, או אם הוא בחלק העליון של הסטאק אבל לא במשימת היעד – מכונה חדשה שנוצרו ודחפו אותן למקבץ.באופן דומה, אם המשתמש ניווט עד לפעילות במקבץ הנוכחי, ההתנהגות נקבעת מצב ההפעלה של פעילות ההורה. אם בפעילות ההורה יש מצב הפעלה
singleTop
(או שה-Intentup
מכילFLAG_ACTIVITY_CLEAR_TOP
), ההורה מועבר החלק העליון של המקבץ, והמצב שלו נשמר.כוונת הניווט מתקבלת לפי
onNewIntent()
של פעילות ההורה . אם בפעילות ההורה מוגדר מצב הפעלהstandard
, וגם ה-Intent מסוגup
לא מכיל אתFLAG_ACTIVITY_CLEAR_TOP
, את הפעילות הנוכחית ואת הורה ייפתח מהמקבץ ואז נוצר מופע חדש של פעילות ההורה כדי לקבל את כוונת הניווט.המצב
"singleInstance"
שונה גם מהמצב"singleTask"
ו-"singleInstancePerTask"
בהיבט אחד בלבד: פעילות עם מצב הפעלה"singleTask"
או"singleInstancePerTask"
מאפשר פעילויות אחרות, בהכרח"standard"
"singleTop"
פעילויות, חלק מהמשימה.א' הפעילות של
"singleInstance"
, לעומת זאת, לא מתירה פעילויות שונות במסגרת המשימה. זו צריכה להיות הפעילות היחידה במשימה. אם מתחיל פעילות נוספת, שהפעילות הזו מוקצית למשימה אחרת, אםFLAG_ACTIVITY_NEW_TASK
היה בכוונה.תרחישים לדוגמה מצב הפעלה כמה מופעים? תגובות השקות רגילות לרוב הפעילויות "standard"
כן ברירת מחדל. המערכת תמיד יוצרת מופע חדש של הפעילות ותנתב את הכוונה אליה. "singleTop"
באופן מותנה אם מופע של הפעילות כבר קיים בחלק העליון של משימת היעד, המערכת מנתבת את הכוונה למכונה הזו באמצעות קריאה ל-method onNewIntent()
שלה, במקום ליצור מופע חדש של הפעילות.השקות מיוחדות
(לא מומלץ לשימוש כללי)"singleTask"
באופן מותנה המערכת יוצרת את הפעילות ברמה הבסיסית (root) של משימה חדשה או מאתרת את הפעילות במשימה קיימת עם אותו תחום עניין משותף. אם מופע של הפעילות כבר קיים ונמצא בשורש המשימה, המערכת מנתבת את הכוונה למכונה קיימת באמצעות קריאה ל-method onNewIntent()
, במקום ליצור חדש."singleInstance"
לא כמו "singleTask"
, אבל המערכת לא מפעילה אף פעילויות אחרות במשימה, שבה קשור המכונה. הפעילות היא תמיד אדם אחד בלבד במשימה."singleInstancePerTask"
באופן מותנה הפעילות יכולה לפעול רק בתור הפעילות הבסיסית של המשימה. הפעילות שיצרה את המשימה, ולכן יש רק מופע אחד את הפעילות הזאת במשימה. עם זאת, אפשר ליצור מופע של הפעילות כמה פעמים במשימות שונות. כמו שאפשר לראות בטבלה הקודמת,
"standard"
הוא מצב ברירת המחדל, שמתאים לרוב סוגי הפעילויות."singleTop"
הוא גם למצב הפעלה נפוץ ושימושי לסוגים רבים של פעילויות. המצבים האחרים,"singleTask"
,"singleInstance"
ו-"singleInstancePerTask"
הם לא מתאים לרוב האפליקציות. הן יוצרות מודל אינטראקציה שסביר להניח שאינו מוכר והוא שונה מאוד מרוב האפליקציות האחרות.בלי קשר למצב ההפעלה שבחרת, חשוב לבדוק את נוחות השימוש של הפעילות במהלך ההפעלה ובחזרה אליה פעילויות ומשימות אחרות באמצעות לחצן 'הקודם'.
מידע נוסף על מצבי ההשקה והאינטראקציה שלהם עם
Intent
דגלים, לראות משימות וערימה האחוריתandroid:lockTaskMode
- קביעה איך המערכת מציגה את הפעילות הזו כשהמכשיר פועל
נעילת מצב משימה.
מערכת Android יכולה להריץ משימות בצורה סוחפת, דמוית קיוסק, שנקראת 'מצב נעילה'. כאשר המערכת פועלת במצב נעילה, משתמשים במכשיר בדרך כלל לא יכולים לראות התראות, לגשת לאפליקציות שאינן ברשימת ההיתרים או חוזרים למסך הבית, אלא אם אפליקציית Home מופיעה ברשימת ההיתרים.
רק אפליקציות נכלל ברשימת ההיתרים של בקר מדיניות המכשירים (DPC) יכול לפעול כשהמערכת נמצאת במצב משימה מסוג נעילה. מערכת ואפליקציות הרשאות, עם זאת, הם יכולים לפעול במצב נעילה בלי להיכלל ברשימת ההיתרים.
הערך יכול להיות כל אחד מהערכים הבאים:
R.attr.lockTaskMode
ערכי מחרוזת:ערך תיאור "normal"
ערך ברירת המחדל. זהו ערך ברירת המחדל. המשימות לא מופעלות במצב 'נעילת משימות', אבל הן יכולות להיות שם באמצעות חיוג startLockTask()
"never"
המשימות לא מופעלות במצב
lockTask
, והמשתמשים במכשיר לא יכולים להצמיד את המשימות האלה מסך מהזמן האחרון.הערה: המצב הזה זמין רק לאפליקציות מערכת ולאפליקציות שיש להן הרשאות. אפליקציות ללא הרשאות עם הערך הזה יטופלו כ-
normal
."if_whitelisted"
אם ה-DPC מאשר את החבילה הזו באמצעות DevicePolicyManager.setLockTaskPackages()
המצב הזה זהה ל-always
, אלא שהפעילות צריכה להפעילstopLockTask()
לפני אפשרות לסיים אם היא המשימה הנעולה האחרונה. אם ה-DPC לא מאשר את החבילה הזו, המצב זהה ל-normal
."always"
משימות שעברו תהליך רוט (Root) בפעילות הזו תמיד מופעלות במצב 'נעילת משימה'. אם המערכת כבר נעילת מצב המשימה כאשר המשימה הזו מופעלת, המשימה החדשה תופעל מעל המשימה הנוכחית. משימות שמופעלות במצב הזה יכולות לצאת ממצב הנעילה של המשימה באמצעות התקשרות
finish()
הערה: המצב הזה זמין רק לאפליקציות מערכת ולאפליקציות שיש להן הרשאות. אפליקציות ללא הרשאות עם הערך הזה יטופלו כ-
normal
.המאפיין הזה נוסף ברמת API 23.
android:maxRecents
- המספר המקסימלי של משימות שהועברו לפעילות הזו ב- מסך השיחות האחרונות. כשמגיעים למספר הרשומות הזה, המערכת מסירה את במופע של המסך 'אחרונים'. הערכים החוקיים הם מספרים שלמים מ-1 עד 50, או מ-1 עד 25 במכשירים עם נפח זיכרון נמוך. הערך אפס אינו חוקי. ערך ברירת המחדל הוא 16.
android:maxAspectRatio
יחס הגובה-רוחב המקסימלי שנתמך בפעילות. אם האפליקציה פועלת במכשיר עם יחס גובה-רוחב רחב יותר, המערכת תדביק את האפליקציה בפורמט letterbox באופן אוטומטי, כך שחלקים מהמסך לא יהיו בשימוש, כך שהאפליקציה תוכל לפעול ביחס הגובה-רוחב המקסימלי שצוין.
יחס הגובה-רוחב המקסימלי מבוטא כמספר עשרוני של המנה של החלק הארוך יותר במכשיר המאפיין מחולק במאפיין הקצר יותר שלו. לדוגמה, אם יחס הגובה-רוחב המקסימלי הוא 7:3, מגדירים את ערך המאפיין הזה כ-2.33.
במכשירים לא לבישים, הערך של המאפיין הזה צריך להיות 1.33 ומעלה. במכשירים לבישים, המספר צריך להיות בפורמט 1.0 ומעלה. אחרת, המערכת מתעלמת להגדיר ערך.
הערה : המערכת מתעלמת מהמאפיין הזה אם הפעילות כוללת הערך
resizeableActivity
מוגדר כ-True, כי פירוש הדבר הוא שהפעילות שלך תומכת בכל גודל.מידע נוסף על המאפיין הזה זמין במאמר להצהיר על יחס גובה-רוחב מקסימלי.
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 3.
android:parentActivityName
- שם הכיתה של ההורה הלוגי של הפעילות. השם כאן חייב להיות זהה לשם של הכיתה
השם שניתן לרכיב ה-
<activity>
התואםandroid:name
.המערכת קוראת את המאפיין הזה כדי לקבוע איזו פעילות תתחיל מתי המשתמש מקיש על הלחצן 'למעלה' בסרגל הפעולות. המערכת יכולה להשתמש במידע הזה גם כדי לחבר מקבץ של פעילויות קודמות עם
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 16.
android:persistableMode
הגדרת האופן שבו מופע של פעילות נשמר בתוך המשימה תופעל מחדש בכל המכשיר.
אם פעילות הבסיס של משימה מגדירה את ערך המאפיין הזה
persistRootOnly
, אז רק הפעילות הבסיסית (root) נשמרת. אחרת, הפעילויות שגבוהות מהביצועים של המשימה מקבץ חזרה הם נבדקים. כל אחת מהפעילויות המגדירות את ערך המאפיין הזה כ-persistAcrossReboots
נשמרו.אם משתמשים במאפיין הזה, צריך להגדיר את הערך שלו לאחד הבאים:
ערך תיאור persistRootOnly
ערך ברירת המחדל. כשהמערכת מופעלת מחדש, משימת הפעילות נשמר, אבל נעשה שימוש רק בכוונת ההפעלה של פעילות השורש.
כשכוונת ההפעלה של האפליקציה טוענת את הפעילות הבסיסית של האפליקציה, הפעילות לא מקבלת אובייקט
PersistableBundle
. לכן לא כדאי להשתמשonSaveInstanceState()
כדי לשמר את מצב הפעילות הבסיסית של האפליקציה במכשיר להפעיל מחדש.הערה: ערך המאפיין הזה משפיע על ערכי האפליקציה התנהגות רק אם הוא מוגדר בפעילות הבסיסית של האפליקציה.
persistAcrossReboots
המצב של פעילות זו נשמר, יחד עם המצב של כל אחת מהן בפעילות גבוהה יותר. חזרה סטאק עם מאפיין
persistableMode
משלו שמוגדרpersistAcrossReboots
אם לפעילות מסוימת אין מאפייןpersistableMode
שמוגדר לערךpersistAcrossReboots
, או אם הוא מופעל באמצעותIntent.FLAG_ACTIVITY_NEW_DOCUMENT
דגל, ואז את הפעילות הזו, יחד עם כל הפעילויות שנמצאות במעלה הגבעה לא נשמרות.כש-Intent טוענת פעילות ש
persistableMode
מוגדר ל-persistAcrossReboots
באפליקציה שלך, הפעילות מקבלת אובייקטPersistableBundle
אמצעי תשלום אחד (onCreate()
). לכן אפשר להשתמשonSaveInstanceState()
לשמר את המצב של פעילות לאחר הפעלה מחדש של מכשיר, כל עוד המאפייןpersistableMode
מוגדר לערךpersistAcrossReboots
.הערה: ערך המאפיין הזה משפיע על ערכי האפליקציה התנהגות גם אם היא מוגדרת בפעילות שאינה הפעילות הבסיסית של האפליקציה פעילות.
persistNever
מצב הפעילות לא נשמר.
הערה: ערך המאפיין הזה משפיע על ערכי האפליקציה התנהגות רק אם הוא מוגדר בפעילות הבסיסית של האפליקציה.
המאפיין הזה נוסף ברמת API 21.
android:permission
- שם ההרשאה שהלקוחות צריכים כדי להפעיל את הפעילות
או לגרום לו להגיב לכוונה בדרך אחרת. אם מתקשר של
startActivity()
אוstartActivityForResult()
לא קיבל את ההרשאה שצוינה, הכוונה שלו לא נמסרת לפעילות.אם המאפיין הזה לא מוגדר, ההרשאה שהוגדרה על ידי
<application>
של אלמנטpermission
חל על הפעילות. אם אף אחד מהמאפיינים לא מוגדר, הפעילות לא מוגנת באמצעות הרשאה.למידע נוסף על הרשאות, אפשר לעיין ב הרשאות בקטע 'סקירה כללית של קובץ המניפסט של האפליקציה'. טיפים בנושא אבטחה.
android:process
שם התהליך שבו הפעילות מופעלת. בדרך כלל, כל הרכיבים של של האפליקציה לפעול בשם תהליך ברירת מחדל שנוצר עבור האפליקציה, ואינך רוצה צריכים להשתמש במאפיין הזה. אבל במקרה הצורך, אפשר לשנות את תהליך ברירת המחדל שם עם המאפיין הזה, וכך תוכלו לפזר את רכיבי האפליקציה בין תהליכים מרובים.
אם השם שהוקצה למאפיין הזה מתחיל בנקודתיים (
:
), בתהליך פרטי לאפליקציה, נוצר כאשר יש בו צורך שהפעילות רצה בתהליך הזה.אם שם התהליך מתחיל בתו קטן, הפעילות תפעל בתהליך גלובלי בשם זה, בתנאי שיש לו הרשאה לעשות זאת. כך אפשר לרכיבים באפליקציות שונות לשתף תהליך, וכך לצמצם שימוש במשאבים.
של הרכיב
<application>
process
יכול להגדיר שם שונה לתהליך ברירת המחדל לכל הרכיבים.android:relinquishTaskIdentity
האם הפעילות מוותרת על מזהי המשימה שלה אל פעילות שנמצאת מעליה, מקבץ משימות. משימה שהמאפיין הזה מוגדר עבורה כפעילות ברמה הבסיסית (root) כ-
"true"
מחליפה את הבסיסIntent
עם הערך של הפעילות הבאה במשימה.אם גם הפעילות הבאה תכלול את קבוצת המאפיינים הזו ל-
"true"
ואז הוא מפיק את הבסיסIntent
לכל פעילות שהוא מפעיל באותה צורה למשימה הזו. כך היא תמשיך לפעול בכל פעילות עד שתתקבל פעילות עם קבוצת המאפיינים הזו. אל"false"
. ערך ברירת המחדל הוא"false"
.המאפיין שמוגדר לערך
"true"
מאפשר גם להשתמש בפעילותActivityManager.TaskDescription
כדי לשנות תוויות, צבעים וסמלים במסך 'תוצאות אחרונות'.android:requireContentUriPermissionFromCaller
-
מציינת את ההרשאות שדרושות להפעלת הפעילות הזו בזמן ההעברה מזהי URI של תוכן. ערך ברירת המחדל הוא
none
, כלומר לא ספציפי נדרשות הרשאות. הגדרת המאפיין הזה מגבילה את הפעילות על סמך ההרשאות של המפעיל. אם למנוי אין ההרשאות הנדרשות, התחלת הפעילות תידחה באמצעותSecurityException
.לתשומת ליבכם: האכיפה פועלת במזהי URI של תוכן בתוך
Intent.getData()
Intent.EXTRA_STREAM
, וגםIntent.getClipData()
.יכול להיות ערך מחרוזת, באמצעות '\\;' כדי לסמן בתו בריחה (escape) תווים כגון '\\n' או '\uxxxx' לתו Unicode;
חייב להיות אחד מהערכים הקבועים הבאים.
קבוע ערך תיאור ללא 0 כברירת מחדל, לא נדרשות הרשאות ספציפיות. קריאה 1 המדיניות הזו אוכפת את המפעיל לקבל גישת קריאה למזהי ה-URI של התוכן שמועברים. ReadAndWrite 4 המערכת אוכפת את ה-Invoker לקבל גם גישת קריאה וגם גישת כתיבה ל-URI של התוכן שהועבר. קריאה אוכתיבה 3 המדיניות הזו אוכפת את ה-Invoker לקבל גישת קריאה או כתיבה ל-URI של התוכן שהועבר. כתיבה 2 המדיניות הזו אוכפת את המפעיל לקבל גישת כתיבה ל-URI של התוכן שהועבר. android:resizeableActivity
-
מציינת אם האפליקציה תומכת במצב ריבוי חלונות. שלך יכולים להגדיר את המאפיין הזה בשדה
<activity>
או<application>
לרכיב מסוים.אם מגדירים את המאפיין הזה כ-
"true"
, המשתמש יכול להפעיל את הפעילות ב- ומצבי מסך מפוצל ומצב חופשי. אם מגדירים את המאפיין כ-"false"
, האפליקציה לא ניתן לבדוק או לבצע אופטימיזציה לסביבה מרובת חלונות. המערכת יכולה הפעילות עדיין הוגדרה במצב ריבוי חלונות כאשר תאימות היא הוחלה.הגדרת המאפיין הזה כ-
"false"
לא מבטיחה שאין אפליקציות אחרות במצב ריבוי חלונות שמוצג במסך, למשל במצב 'תמונה בתוך תמונה', או במסכים אחרים. לכן, הגדרת הסימון הזה לא אומרת שהאפליקציה יש גישה בלעדית למשאבים.אם האפליקציה מטרגטת רמת API 24 ומעלה ולא ציינת ערך של המאפיין הזה, ערך ברירת המחדל של המאפיין הוא
"true"
.אם האפליקציה שלכם מטרגטת רמת API 31 ומעלה, המאפיין הזה פועל בצורה שונה בחשבונות קטנים וגדולים מסכים:
- מסכים גדולים (sw >= 600dp): כל האפליקציות תומכות במצב ריבוי חלונות. התכונה מציינת
האם ניתן לשנות את גודל האפליקציה, ולא האם האפליקציה תומכת במצב ריבוי חלונות. אם המיקום
resizeableActivity="false"
, האפליקציה עוברת למצב תאימות בעת הצורך בהתאם למידות התצוגה. - מסכים קטנים (sw < 600dp): אם
resizeableActivity="true"
והמינימום הרוחב והגובה המינימלי של הפעילות עומדים בדרישות לגבי ריבוי חלונות, האפליקציה תומכת במצב ריבוי חלונות. אם הערך שלresizeableActivity="false"
הוא לא, האפליקציה לא לתמוך במצב ריבוי חלונות, ללא קשר לרוחב ולגובה המינימליים של הפעילות.
הערה: יצרני מכשירים יכולים לשנות את רמת ה-API ברמה 31 או התנהגות המשתמשים.
המאפיין הזה נוסף ברמת API 24.
הערה: ערך הפעילות הבסיסית של המשימה חל על כל פעילויות נוספות שהופעלו במשימה. כלומר, אם פעילות השורש של של משימה ניתן לשנות את הגודל שלה, ואז המערכת מתייחסת לכל שאר הפעילויות אם ניתן לשנות את גודלם. אם לא ניתן לשנות את הגודל של פעילות השורש, לא ניתן לשנות את הגודל של הפעילויות שבמשימה.
- מסכים גדולים (sw >= 600dp): כל האפליקציות תומכות במצב ריבוי חלונות. התכונה מציינת
האם ניתן לשנות את גודל האפליקציה, ולא האם האפליקציה תומכת במצב ריבוי חלונות. אם המיקום
android:screenOrientation
הכיוון המבוקש של הפעילות.
כשפעילות ממלאת את כל המסך, הכיוון המבוקש משמש כהצעה לשנות את הכיוון במסך הזה בהתאם לערך המבוקש. כתוצאה מכך, יכול להיות שונה מהכיוון הפיזי של המסך במקום, מה שמחייב שהמשתמש יסובב את המכשיר כדי להמשיך להשתמש באפליקציה. ב-Android 12 (רמת API) 31) ואילך, יצרני מכשירים יכולים להגדיר מכשירים נפרדים במסכים (כמו מסך בגודל טאבלט של מכשיר מתקפל) כדי להתעלם מההצעה הזו, ובמקום זאת לאלץ את המשתמש ליצור פעילות בפורמט letterbox בכיוון המועדף על המכשיר. הזה יובילו להצגת הפעילות בהתאם ליעד המבוקש, בלי שהמשתמש יצטרך לבצע סיבוב פיזי של המכשיר.
במצב ריבוי חלונות, הכיוון המבוקש לא משמש כהצעה לכיוון מסוים. אם הפעילות לפורמט letterbox, הפונקציה הכיוון משפיע על פורמט letterbox שמיושם בפעילות.
הערך יכול להיות כל אחת מהמחרוזות הבאות:
"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. הערה: כשמצהירים על אחד מהערכים של הפורמט לרוחב או לאורך, זה נחשב כדרישה קשיחה לגבי הכיוון שבו הפעילות רצה. הערך שהצהרת עליו מאפשר סינון לפי שירותים כמו Google Play, לכן האפליקציה שלך זמינים רק במכשירים שתומכים בכיוון הנדרש לפעילויות שלכם. עבור לדוגמה, אם מצהירים על
"landscape"
,"reverseLandscape"
, או"sensorLandscape"
, האפליקציה שלך זמינה רק למכשירים שתומכים כיוון לרוחב.בנוסף, צריך להצהיר במפורש הפורמט של האפליקציה צריך להיות לאורך או לרוחב עם
<uses-feature>
רכיב, למשל<uses-feature android:name="android.hardware.screen.portrait"/>
. זו התנהגות סינון שסופקו על ידי Google Play ושירותים אחרים שתומכים בה, והפלטפורמה עצמה לא קובעת אם ניתן יהיה להתקין את האפליקציה כשהמכשיר תומך רק בכיוונים מסוימים.android:showForAllUsers
-
אם הפעילות מוצגת כשהמשתמש הנוכחי של המכשיר שונה מהמשתמש שפתח את הפעילות. אפשר להגדיר את המאפיין הזה לערך מילולי, כמו
"true"
או"false"
, או אפשר להגדיר את המאפיין למאפיין של משאב או של עיצוב שמכיל ערך בוליאני.המאפיין הזה נוסף ברמת API 23.
android:stateNotNeeded
- אם אפשר לסיים את הפעילות ולהפעיל אותה מחדש בהצלחה
בלי לשמור את המצב שלה. השעה היא
"true"
אם אפשר להפעיל מחדש ללא התייחסות למצב הקודם, וגם"false"
אם הערך הקודם צריך לציין את המצב. ערך ברירת המחדל הוא"false"
.בדרך כלל, לפני שפעילות מושבתת זמנית כדי לחסוך במשאבים,
onSaveInstanceState()
נקראת. השיטה הזאת שומרת את המצב הנוכחי של הפעילות אובייקטBundle
, שמועבר אלonCreate()
כשהפעילות מופעלת מחדש. אם המאפיין הזה מוגדר לערך"true"
, ייתכן שלא ניתן להתקשר אלonSaveInstanceState()
, ותועברonCreate()
null
במקוםBundle
, כפי שהוא כאשר הפעילות מתחילה בפעם הראשונה.המשמעות של הגדרת
"true"
היא שאפשר להתחיל מחדש את הפעילות בלי במצב שנשמר. לדוגמה, הפעילות שמציגה את מסך הבית משתמש בהגדרה הזו כדי להבטיח שהיא לא תוסר אם הוא קורס מסיבה כלשהי. android:supportsPictureInPicture
-
מציין אם הפעילות תומכת ב- תצוגה של תמונה בתוך תמונה.
android:taskAffinity
המשימה שקשורה לפעילות. פעילויות עם אותם תחומי עניין משותפים, שייכים לאותה משימה 'application' מנקודת המבט של המשתמש. תחום העניין המשותף של משימה נקבע על סמך הזיקה של פעילות השורש.
זיקה קובעת שני דברים: המשימה שבה הפעילות יוצרים הורה מחדש אל (עיינו ב
allowTaskReparenting
) והמשימה שמכילה את הפעילות במועד ההשקה עםFLAG_ACTIVITY_NEW_TASK
לסמן.כברירת מחדל, לכל הפעילויות באפליקציה יש תחום עניין זהה. שלך להגדיר את המאפיין הזה כך שיקבץ אותן באופן שונה, ואפילו להציב פעילויות שמוגדרות באפליקציות שונות במסגרת אותה משימה. שפת תרגום לציין שלפעילות אין זיקה לאף משימה, להגדיר למחרוזת ריקה.
אם לא מגדירים את המאפיין הזה, הפעילות מקבלת בירושה את קבוצת תחום העניין המשותף עבור האפליקציה. לצפייה
<application>
של אלמנטtaskAffinity
. שם ברירת המחדל של תחום העניין המשותף של אפליקציה הוא מרחב השמות שמוגדר קובץbuild.gradle
.android:theme
- הפניה למשאב סגנון שמגדיר נושא כללי לפעילות.
הפעולה הזו תגדיר באופן אוטומטי את ההקשר של הפעילות לשימוש
theme
ויכול להיות גם גורם ל-"start" אנימציות לפני השקת הפעילות, כדי לשפר את תואמות לפעילות שנראית בפועל.אם לא מגדירים את המאפיין הזה, הפעילות מקבלת בירושה את העיצוב שהוגדר את היישום כולו,
<application>
של אלמנטtheme
. אם גם המאפיין הזה לא מוגדר, המערכת תשתמש בעיצוב ברירת המחדל של המערכת. לקבלת מידע נוסף למידע נוסף, ראו סגנונות ועיצובים. android:uiOptions
אפשרויות נוספות לממשק המשתמש של פעילות. חייב להיות אחד מהערכים הבאים.
ערך תיאור "none"
אין אפשרויות נוספות לממשק המשתמש. (זוהי ברירת המחדל) "splitActionBarWhenNarrow"
הוספת בר ב- בתחתית המסך כדי להציג פעולות לביצוע בסרגל האפליקציות, שנקרא גם סרגל הפעולות, כאשר מוגבל לשטח אופקי, למשל במצב תצוגה לאורך במכשיר הנייד. במקום מספר הפעולות לביצוע שמופיעות בסרגל האפליקציה שבחלק העליון של המסך, סרגל האפליקציה מחולקים לקטע הניווט העליון ולסרגל התחתון עבור פעולות לביצוע. כלומר, אפשרות סבירה שטח האחסון זמין לא רק לפעולות לביצוע, אלא גם לניווט ולשם פריט הרכיבים שלמעלה. אפשרויות בתפריט לא יפוצלו בין שני העמודות. הן תמיד מופיעות את כל החלקים. מידע נוסף על סרגל האפליקציות זמין במאמר הוספה של סרגל האפליקציות.
המאפיין הזה נוסף ברמת API 14.
android:windowSoftInputMode
- איך החלון הראשי של הפעילות מקיים אינטראקציה עם החלון שמכיל
למקלדת הרוכה שמופיעה במסך. ההגדרה של המאפיין הזה משפיעה על
דברים:
- אם המקלדת הרכה מוסתרת או גלויה כשהפעילות הופכת המיקוד של תשומת הלב של המשתמשים.
- אם החלון הראשי של הפעילות הוחלט להקטין את הגודל של המקלדת כדי לפנות מקום למקלדת הרכה או לתוכן שלה להזיז כדי שהמיקוד הנוכחי יהיה גלוי כאשר חלק מהחלון מכוסה על ידי במקלדת הרכה.
ההגדרה חייבת להיות אחד מהערכים המפורטים בטבלה הבאה, או שילוב של ערך אחד של
"state..."
ועוד"adjust..."
אחד עם ערך מסוים. הגדרה של ערכים מרובים בכל אחת מהקבוצות, למשל"state..."
ערכים, עם תוצאות לא מוגדרות. ערכים בודדים מופרדים באמצעות קו אנכי (|
), כפי שמוצג בדוגמה הבאה:<activity android:windowSoftInputMode="stateVisible|adjustResize" ... >
ערכים שמוגדרים כאן (מלבד
"stateUnspecified"
ו-"adjustUnspecified"
) משנים את הערכים שהוגדרו בעיצוב.ערך תיאור "stateUnspecified"
אם המקלדת הרכה מוסתרת או גלויה לא מצוינת. המערכת בוחרת מצב מתאים או בהתאם להגדרה בעיצוב. זוהי הגדרת ברירת המחדל להתנהגות של המקלדת הרכה.
"stateUnchanged"
המקלדת הרכה נשמרת במצב שבו היא הייתה בעבר, גלוי או מוסתר, כשהפעילות מופיעה. "stateHidden"
המקלדת הרכה מוסתרת כשהמשתמש בוחר בפעילות – כלומר כאשר המשתמש עובר הלאה אל פעילות אחרת במקום לחזור אליה בעזיבה של פעילות אחרת. "stateAlwaysHidden"
המקלדת הרכה תמיד מוסתרת בחלון הראשי של הפעילות כולל מיקוד בקלט. "stateVisible"
המקלדת הרכה מוצגת כשהמשתמש בוחר פעילות – כלומר, כשהמשתמש עובר קדימה בפעילות, במקום לחזור אליה כשעוזבים פעילות אחרת פעילות. "stateAlwaysVisible"
המקלדת הרכה מוצגת כשהחלון מודגש על ידי הקלט. "adjustUnspecified"
אם הגודל של החלון הראשי של הפעילות ישתנה. כדי לפנות מקום למקלדת הרכה או לתוכן של הזזת החלון כדי שהמיקוד הנוכחי יהיה גלוי במסך לא צוין. המערכת תבחר אוטומטית אחד מהמצבים האלה, בהתאם אם בתוכן של החלון יש תצוגות פריסה יכולים לגלול את התוכן שלהם. אם יש נוף, החלון שגודלם משתנה, בהנחה שגלילה יכולה להפוך מתוכן החלון גלוי באזור קטן יותר. זוהי הגדרת ברירת המחדל להתנהגות של החלון הראשי.
"adjustResize"
המערכת תמיד משנה את גודל החלון הראשי של הפעילות כדי לפנות מקום למקלדת הרכה שמופיעה במסך. "adjustPan"
הגודל של החלון הראשי של הפעילות לא השתנה כדי לפנות מקום במקלדת. במקום זאת, התוכן של החלון באופן אוטומטי מזיזים כך שהמיקוד הנוכחי אף פעם לא מוסתר על ידי המקלדת והמשתמשים תמיד יכולים לראות מה הם מקלידים. בדרך כלל פחות רצוי מאשר שינוי גודל, כי ייתכן שהמשתמש יצטרך לסגור את כדי לגשת אל חלקים מוסתרים של החלון ולבצע פעולות איתם. המאפיין הזה נוסף ברמת API 3.
- הושקו ב:
- רמת API 1 לכל המאפיינים מלבד
noHistory
והקבוצהwindowSoftInputMode
, שנוספו ב-API רמה 3. - למידע נוסף:
<application>
<activity-alias>
דוגמאות התוכן והקוד שבדף הזה כפופות לרישיונות המפורטים בקטע רישיון לתוכן. Java ו-OpenJDK הם סימנים מסחריים או סימנים מסחריים רשומים של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2024-08-22 (שעון UTC).
[[["התוכן קל להבנה","easyToUnderstand","thumb-up"],["התוכן עזר לי לפתור בעיה","solvedMyProblem","thumb-up"],["סיבה אחרת","otherUp","thumb-up"]],[["חסרים לי מידע או פרטים","missingTheInformationINeed","thumb-down"],["התוכן מורכב מדי או עם יותר מדי שלבים","tooComplicatedTooManySteps","thumb-down"],["התוכן לא עדכני","outOfDate","thumb-down"],["בעיה בתרגום","translationIssue","thumb-down"],["בעיה בדוגמאות/בקוד","samplesCodeIssue","thumb-down"],["סיבה אחרת","otherDown","thumb-down"]],["עדכון אחרון: 2024-08-22 (שעון UTC)."],[],[]]