- 語法:
<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"
啟動模式只能設為任務的根層級 更改父項設定僅限於"standard"
和"singleTop"
。(另請參閱launchMode
屬性)。 android:alwaysRetainTaskState
- 活動所處的任務狀態是否始終
是由系統維護
"true"
表示包含,"false"
表示系統可以將任務重設為初始 或在特定情況下的狀態預設值為"false"
。這個 屬性對任務的根活動才有意義。系統會忽略這個註解 其他所有活動中一般而言,系統會清除任務,從堆疊中移除所有活動 高於根活動層級 (有時使用者重新選取 就能直接在主畫面上執行任務通常,如果使用者在一段時間內 (例如 30 分鐘) 未造訪任務,系統就會執行這項作業。
不過,如果這項屬性為
"true"
,使用者一律會傳回 工作狀態這是 例如網路瀏覽器等 使用者不想失去的特定狀態 (例如多個開啟的分頁) android:autoRemoveFromRecents
- 含有此屬性的活動所啟動的工作是否保留在
最近的畫面到
工作完成如果為
true
,表示工作是 會自動從「最近使用」畫面中移除。這會覆寫呼叫端使用的FLAG_ACTIVITY_RETAIN_IN_RECENTS
。這必須是布林值,"true"
或"false"
。 android:banner
- 這是一種可繪製資源,用於為關聯項目提供延伸圖片橫幅。與以下項目搭配使用
<activity>
標記,用於提供特定活動的預設橫幅,或是<application>
代碼,為所有應用程式活動提供橫幅廣告。系統會使用橫幅來代表 Android TV 主畫面上的應用程式。橫幅只會顯示在主畫面上 僅由具有處理
CATEGORY_LEANBACK_LAUNCHER
意圖。這項屬性會設為含有以下可繪製資源的參照: 映像檔,例如
"@drawable/banner"
此屬性沒有預設橫幅。如需詳細資訊,請參閱 在「開始使用電視應用程式」中提供主畫面橫幅。
android:canDisplayOnRemoteDevices
-
指出活動是否能顯示在連線的遠端裝置上 不一定執行 Android。這必須是布林值,
"true"
或"false"
。此屬性的預設值為
"true"
。 android:clearTaskOnLaunch
- 可指定是否要將所有活動從任務中移除,但以下項目除外:
根層級活動 (從主畫面重新啟動時)。
"true"
表示一律要移除任務的活動,直到剩下根活動為止,以及"false"
表示不滿意。預設值為"false"
。此屬性 對啟動新任務的活動 (根活動) 才有意義。 任務中的所有其他活動均會忽略此屬性。如果值為
"true"
,則每次使用者啟動工作時, 無論他們最後在從事什麼活動 或他們運用「返回」或「主畫面」按鈕 就離開當值為"false"
時,可以在該任務中清除該任務的活動 但並非每次都會發生詳情請參閱alwaysRetainTaskState
屬性。假設使用者在主畫面上啟動活動 P, 接著前往活動 Q接著輕觸主畫面按鈕,再返回 活動 P一般而言,使用者會看到活動 Q,因為這是他們 最後一項工作是進行不過,如果 P 將這個旗標設為
"true"
, 上的活動 (在此案例中為 Q),會在使用者啟動時移除 活動 P。因此,使用者返回任務時只會看到 P。如果這項屬性和
allowTaskReparenting
皆為"true"
,任何可更改父項的活動均會移至 建立共通點的任務然後捨棄剩餘的活動。如未設定
FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
,系統會忽略這個屬性。 android:colorMode
指定活動的色彩模式,可指定為
hdr
或wideColorGamut
。如果設為
hdr
,則若否,則要求會在高動態範圍中顯示活動 則支援這個 API如果為
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) 偵測到須更新 MCC 的 SIM 卡。 "mnc"
變更 IMSI 行動網路代碼 (MNC) 時 偵測到需要更新 MNC 的 SIM 卡。 "navigation"
變更導覽類型的 TA (軌跡球或 D-Pad)。通常不會發生這種情形。 "orientation"
變更螢幕方向,例如使用者旋轉裝置。
注意:如果應用程式指定 Android 3.2 (API 級別 13) 以上版本也宣告了
"screenLayout"
和"screenSize"
設定,因為螢幕版面配置 螢幕大小可能會有所變更 裝置會在直向和橫向模式間切換。"screenLayout"
變更螢幕版面配置,例如使用者啟動其他螢幕。 "screenSize"
變更目前可用的螢幕大小。
這代表目前可用大小相對於 因為動態長寬比會隨著使用者切換橫向模式而改變 直向和直向影片
已新增至 API 等級 13。
"smallestScreenSize"
變更實體螢幕大小。
這代表了尺寸的變化,與方向無關,所以只有 會隨著實際的實體螢幕尺寸變化 (例如 以及外接螢幕這項設定的變更對應一項變更 的
smallestWidth
設定已新增至 API 等級 13。
"touchscreen"
變更觸控螢幕。通常不會發生這種情形。 "uiMode"
變更使用者介面模式,例如使用者選擇 將裝置放到桌面或車用座架上,或是變更夜間模式。如要進一步瞭解不同的 UI 模式,請參閱 UiModeManager
。已在 API 級別 8 中新增。
所有這些設定變更都會影響 應用程式。因此
onConfigurationChanged()
因此通常必須重新執行 擷取所有資源 (包括檢視版面配置和可繪項目),以正確處理變更。注意:如要處理與多視窗模式相關的設定變更,請同時使用
"screenLayout"
和"smallestScreenSize"
。Android 7.0 (API 級別 24) 以上版本支援多視窗模式。 android:directBootAware
活動是否具有「直接啟動感知特性」,即 設定是否可在使用者解鎖裝置前執行
注意:在直接啟動期間,應用程式中的活動只能存取儲存在「受裝置保護」儲存空間中的資料。
預設值為
"false"
。android:documentLaunchMode
- 指定每次啟動任務時,如何在任務中新增活動的例項。
這個屬性可讓使用者擁有同一應用程式的多份文件
出現在最近使用畫面中。
這個屬性有四個值,當使用者開啟文件時,會產生以下效果 使用應用程式:
值 說明 "intoExisting"
系統會搜索一個任務,其基本意圖 ComponentName
和資料 URI 與啟動意圖相匹配。如果找到這類任務,系統會將其清除 並透過根活動onNewIntent(android.content.Intent)
。 如果系統找不到這樣的任務,系統會建立一個新的任務。"always"
即使文件已開啟,活動仍會為文件建立新的任務。這與同時設定 FLAG_ACTIVITY_NEW_DOCUMENT
和FLAG_ACTIVITY_MULTIPLE_TASK
旗標的效果相同。"none"
該活動不會為活動建立新任務。這是預設值,只有在已設定 FLAG_ACTIVITY_NEW_TASK
時才會建立新任務。「最近使用」畫面會依預設方式處理活動:只針對 應用程式就會從使用者上次叫用的活動繼續運作。"never"
即使 Intent 包含 FLAG_ACTIVITY_NEW_DOCUMENT
。設定這個屬性會覆寫 「FLAG_ACTIVITY_NEW_DOCUMENT
」和FLAG_ACTIVITY_MULTIPLE_TASK
標記 (如果設有其中一種標記) 活動和「最近使用」畫面會顯示應用程式的單一任務,從應用程式繼續執行 使用者上次叫用的任何活動。注意:如果值不是
"none"
和"never"
, 活動是以launchMode="standard"
定義。如未指定這項屬性 使用的是documentLaunchMode="none"
。 android:enabled
- 表示系統可否建立活動的例項。
"true"
表示可以,"false"
表示不可以。預設值為"true"
。<application>
元素有專屬的enabled
屬性,該屬性適用於包括活動在內的所有應用程式元件。<application>
和<activity>
屬性都必須是"true"
,因為兩者 預設值是為了讓系統能建立活動的例項。如果有 為"false"
,無法例項化。 android:enableOnBackInvokedCallback
- 這個旗標可讓您在活動層級選擇啟用預測系統動畫。行為
可讓你更輕鬆地將大型多活動應用程式遷移至預測返回手勢。
設定
android:enableOnBackInvokedCallback=false
會關閉預測返回功能 視標記位置而定,在活動層級或應用程式層級建立動畫 並指示系統忽略對OnBackInvokedCallback
平台 API 的呼叫。 android:excludeFromRecents
是否要從 中排除由此活動啟動的任務 最近的畫面。也就是說,如果這個活動是新事件的根活動 這個屬性可決定工作是否會出現在最近使用的應用程式清單中。是
"true"
如果工作已從清單中排除;如果為"false"
群組包含。預設值為"false"
。android:exported
是否可由其他的元件啟動活動 應用程式:
- 如果是
"true"
,表示任何應用程式皆可存取該活動,且可由應用程式確切啟動 類別名稱。 - 如果是
"false"
,則只有 具備相同使用者 ID 的應用程式,或是具有特殊權限的系統元件。 如果沒有意圖篩選器,則此為預設值。
如果應用程式中的活動包含意圖篩選器,請將這項元素設為
"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 轉譯器為 改善許多常見 2D 圖形的效能。 作業。啟用硬體加速轉譯器時,大部分的作業 在 Canvas、Pint、Xfermode、ColorFilter、Shader 和 Camera 中都會加速。
使動畫更流暢、捲動畫面更順暢,以及提升效能 整體回應速度,即使是未明確運用 架構的 OpenGL 程式庫由於 啟用硬體加速功能,應用程式會耗用更多 RAM。
並非所有 OpenGL 2D 運算都會加速。如果啟用 使用硬體加速轉譯器,測試應用程式 使用轉譯器
android:icon
代表活動的圖示。當需要在螢幕上顯示活動時,該圖示會顯示給使用者。舉例來說,啟動工作的活動圖示會顯示在啟動器視窗中。圖示通常會與標籤一起顯示。如需該標籤的相關資訊,請參閱
android:label
屬性。這項屬性會設為含有以下可繪製資源的參照: 映像檔定義如未設定,則應用程式指定的圖示 而是擷取整整併的儲存格詳情請參閱
<application>
元素的icon
屬性。活動的圖示 (無論是在這裡設定,還是
<application>
元素,也是所有活動的意圖篩選器預設圖示。詳情請參閱<intent-filter>
個元素的icon
屬性。android:immersive
- 設定當前活動的沉浸模式設定。如果是
"true"
,表示ActivityInfo.flags
成員將一律擁有 已設定FLAG_IMMERSIVE
位元 (即使 在執行階段使用setImmersive()
方法變更沉浸模式。 android:label
使用者可理解的活動標籤。標籤會在畫面上顯示 在向使用者呈現活動時。這類名稱經常顯示在 和活動圖示如未設定這項屬性,則為應用程式整體設定的標籤會改為 查看
<application>
元素的label
屬性。活動的標籤 (無論是在這裡設定,或是由
<application>
元素也是 所有活動的意圖篩選器預設標籤。詳情請參閱<intent-filter>
個元素的label
屬性。這個標籤應設為字串資源的參照,這樣才能像使用者介面中的其他字串一樣進行本地化。不過為了方便起見,您也可以在開發應用程式時將其設為原始字串。
android:launchMode
活動啟動方式的指示。共有五種模式 可與活動旗標搭配使用 (
FLAG_ACTIVITY_*
常數) 在Intent
物件中,藉此判定 呼叫活動來處理意圖:"standard"
"singleTop"
"singleTask"
"singleInstance"
"singleInstancePerTask"
預設模式為
"standard"
。如下表所示,這些模式分為兩個主要群組, 其中一側的
"standard"
和"singleTop"
活動,以及"singleTask"
、"singleInstance"
和 另一個有"singleInstancePerTask"
項活動。具有"standard"
或"singleTop"
啟動模式 可以多次執行例項例項可以屬於任何任務,也可以位於活動任務中的任何位置。通常他們必須 附加至已呼叫
startActivity()
,除非Intent
物件包含FLAG_ACTIVITY_NEW_TASK
指令,此時系統會選擇其他任務。詳情請參閱taskAffinity
屬性。相較之下,
"singleTask"
、"singleInstance"
和"singleInstancePerTask"
活動的行為不同。"singleInstancePerTask"
一律位於活動任務的根層級。 此外,裝置一次只能容納一個 一次只能有"singleInstance"
項活動"singleInstancePerTask
活動可以多次例項化 在不同工作中FLAG_ACTIVITY_MULTIPLE_TASK
或FLAG_ACTIVITY_NEW_DOCUMENT
資源。具有
"singleTask"
啟動模式的活動會結合 行為"singleInstance"
和"singleInstancePerTask"
:活動可建立多個例項 且可位於相同taskAffinity
工作中的任何位置。 但裝置一次只能容納一個任務,用來找出"singleTask"
活動,位於活動任務的根層級。"standard"
和"singleTop"
模式彼此不同 一個尊重:每當"standard"
有一個新意圖時 系統會建立該類別的新例項來回應該意圖。 每個執行個體都處理一個單一意圖。同樣地,"singleTop"
活動的新例項也可以 來處理新意圖然而,如果目標工作已有 活動堆疊頂端的現有例項,即該活動 接收新意圖
onNewIntent()
呼叫。 系統不會建立新執行個體。 否則,如果 「"singleTop"
」活動在目標任務中,但並非頂端 或位於堆疊頂端,但不在目標任務中,則新的執行個體 產生並推送出去同樣地,如果使用者 導覽 至目前堆疊上的活動,行為則是由 父項活動的啟動模式。如果父項活動的啟動模式為
singleTop
(或up
意圖包含FLAG_ACTIVITY_CLEAR_TOP
),系統會將父項移至 而且其狀態會保留。已收到瀏覽意圖 由父項活動的
onNewIntent()
提供 方法。如果父項活動的啟動模式為standard
,且up
意圖不包含FLAG_ACTIVITY_CLEAR_TOP
、目前活動及其中的 父項都會從堆疊中彈出,然後建立父項活動的新例項來接收導覽意圖。"singleInstance"
模式也與"singleTask"
不同 和"singleInstancePerTask"
只有一個尊重:"singleTask"
或"singleInstancePerTask"
啟動模式 允許其他活動 (必須是"standard"
和"singleTop"
活動,屬於其任務的一部分。A 罩杯 另一方面,「
"singleInstance"
」活動不允許其他 新增活動加入工作中這必須是該工作的唯一活動。如果是 啟動另一項活動,該活動會指派給不同的任務;FLAG_ACTIVITY_NEW_TASK
是否在意圖中。用途 啟動模式 可否有多個例項? 留言 大多數活動的正常啟動 "standard"
是 預設。系統一律會在目標工作中建立新的活動執行個體,並將意圖轉送到該工作。 "singleTop"
有條件 如果在目標任務的頂端已經存在一個活動的執行個體,系統就會透過呼叫該執行個體的 onNewIntent()
方法將意圖轉送到該執行個體,不會建立該活動的新執行個體。專門啟動
(不建議一般用途)"singleTask"
有條件 系統會在新工作的根層級中建立活動,或設有同樣相依性的現有任務中尋找該活動。如果該活動內已有執行個體,且該執行個體位於任務根層級,則系統會透過呼叫該執行個體的 onNewIntent()
方法將意圖轉送到該執行個體,而不會建立新的執行個體。"singleInstance"
否 與 "singleTask"
相同,只是系統不會啟動任何 將其他活動放入該例項的任務中。該活動始終是其任務中唯一的成員。"singleInstancePerTask"
有條件 活動只能以任務的根活動 (第一個) 的身分執行 建立任務的活動 所以只有一個執行個體 但在工作中定義這個活動不過,此活動可在不同任務中多次例項化。 如上表所示,
"standard"
是預設模式, 適合大多數類型的活動"singleTop"
也是用於多種類型的活動,是相當實用的啟動模式。其他模式"singleTask"
、"singleInstance"
和"singleInstancePerTask"
是 不適合大多數應用程式。 這類模型產生的互動模式可能並不陌生 且有別於其他應用程式。無論選擇哪種啟動模式,請務必測試可用性 活動期間以及從應用程式返回的頁面內容 其他活動和工作。
進一步瞭解啟動模式及其與
Intent
的互動方式 旗標,請參閱 工作和返回堆疊。android:lockTaskMode
- 決定裝置以鎖定任務模式執行時,系統如何顯示這個活動。
Android 能以類似資訊站的方式執行任務,這種沉浸式的做法稱為鎖定任務模式。當系統執行特定操作時 在鎖定任務模式下執行,裝置使用者通常無法查看通知,也無法存取未列入許可清單的應用程式。 或返回主畫面。
僅限符合下列條件的應用程式 系統處於鎖定任務模式時,可由裝置政策控制器 (DPC) 列入許可清單。不過,系統和具有特殊權限的應用程式可以在鎖定任務模式下執行,而不必加入許可清單。
這個值可以是下列任一
R.attr.lockTaskMode
字串值:值 說明 "normal"
預設值。這是預設值。系統不會在鎖定任務模式中啟動任務,但您可以藉由呼叫 startLockTask()
讓其處於該模式。"never"
任務不會在
lockTask
模式下啟動,裝置使用者也無法從 最近的畫面。注意:這個模式僅適用於系統和具有特殊權限的應用程式。具有該值的非權限應用程式被視為
normal
。"if_whitelisted"
如果 DPC 使用 DevicePolicyManager.setLockTaskPackages()
來授權這個套件,代表這種模式與always
相同,唯一區別是,如果該活動是最後一個經鎖定的任務,就需要呼叫stopLockTask()
才能完成。如果 DPC 未授權此套件, 模式與normal
相同。"always"
位於此活動根層級的任務,一律會在鎖定任務模式下啟動。如果系統已加入 鎖定任務模式,接著新的任務就會在目前的任務上方啟動。 在此模式下啟動的工作可呼叫
finish()
以離開鎖定工作模式。注意事項:這個模式僅適用於系統和具有權限的應用程式。具有該值的非權限應用程式被視為
normal
。這項屬性是在 API 級別 23 中導入。
android:maxRecents
- 在 中,根層級為此活動的任務數量上限 最近的畫面。達到這個數量時,系統會移除最近的項目 「近期」畫面中使用的同一個例項。有效值是介於 1 到 50 之間的整數,在低記憶體裝置上則為 1 到 25 之間。 0 為無效值。預設值為 16。
android:maxAspectRatio
該活動支援的最大長寬比。如果應用程式在寬高比的裝置上運行,系統會自動對應用程式進行上下黑邊處理,留下部分未使用的螢幕,以便應用程式能夠以其指定的最大寬高比運行。
將裝置長邊除以短邊所得的商 (以小數形式表示),就是最大顯示比例。舉例來說,如果長寬比上限是 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
,系統便只會保留根活動。否則,工作中排名較高的活動 返回堆疊 任何將此屬性值設為 但會保留persistAcrossReboots
。如果使用這個屬性,則必須將其值設為下列其中一個值:
值 說明 persistRootOnly
預設值。 當系統重新啟動時,活動任務被保留下來,但只有根層級活動的啟動意圖被使用。
當應用程式的啟動意圖載入應用程式的根活動時,活動並不會收到
PersistableBundle
物件。因此,請勿利用onSaveInstanceState()
保留應用程式在裝置重新啟動狀態下的根活動狀態。注意:只有在應用程式的根活動上設定這個屬性值時,該值才會影響您應用程式的行為。
persistAcrossReboots
系統會保留這個活動的狀態,還有返回堆疊上層各活動的狀態,後者的
persistableMode
屬性設為persistAcrossReboots
。如果活動沒有設為persistAcrossReboots
的persistableMode
屬性,或者是透過Intent.FLAG_ACTIVITY_NEW_DOCUMENT
旗標啟動,系統就不會保留該活動,連帶也不會保留返回堆疊上層的所有活動。當意圖在應用程式中載入
persistableMode
屬性設為persistAcrossReboots
的活動時,該活動會在自身的onCreate()
方法中接收PersistableBundle
物件。因此,只要活動的persistableMode
屬性設為persistAcrossReboots
,您就可以透過onSaveInstanceState()
在裝置重新啟動時保留活動的狀態。注意:即使是在應用程式根活動以外的活動上設定這個屬性值,該值仍會影響您應用程式的行為。
persistNever
系統不會保留活動的狀態。
注意:只有在應用程式的根活動上設定這個屬性值時,該值才會影響您應用程式的行為。
此屬性在 API 級別 21 中推出。
android:permission
- 客戶必須擁有的權限名稱來啟動該活動或者以其他方式讓它對意圖作出反應。如果呼叫者是
startActivity()
或startActivityForResult()
未授予指定權限,其意圖就不會傳遞至活動。如未設定此屬性,則會控制
<application>
元素的permission
屬性套用至活動。如果未設定這兩個屬性,活動就不會受到 權限。 android:process
執行活動的程序名稱。一般來說, 應用程式是在系統建立的預設程序名稱中執行 就需要使用這項屬性但如有必要,您可以覆寫預設程序 讓您運用這項屬性將應用程式元件 多個程序。
如果指派給這項屬性的名稱開頭為半形冒號 (
:
), 只在必要時建立,專供應用程式使用 活動會在該程序中執行如果程序名稱的開頭是小寫半形字元,活動就會執行 但必須先獲得授權,才能使用該名稱 這樣一來,不同應用程式中的元件就能共用同一個程序, 資源用量
<application>
元素的process
屬性可以為所有元件設定不同的預設程序名稱。android:relinquishTaskIdentity
活動是否將自身的任務識別碼交給其位置上之活動的 如果任務的根層級活動將此屬性設為
"true"
,則該任務會取代基本指令Intent
包含工作中下一個活動的結果。如果下一個活動也設定了這個屬性 對
"true"
而言,它會將基礎Intent
讓給其在同一內啟動的任何活動 工作。系統會繼續為每個活動執行此程序,直到遇到具備此屬性組合的活動為止 至"false"
。預設值為"false"
。此屬性設為
"true"
還可允許活動使用 使用ActivityManager.TaskDescription
鍵即可變更標籤、顏色 和「最近使用」畫面中的圖示。android:requireContentUriPermissionFromCaller
-
指定在傳遞時啟動此活動所需的權限 內容 URI預設值為
none
,表示無特定 需要授予必要權限。設定這項屬性可限制活動 叫用此回呼。如果叫用者沒有 必要的權限,系統會透過SecurityException
拒絕活動啟動。請注意,這項違規處置適用於其中的內容 URI
Intent.getData()
、Intent.EXTRA_STREAM
, 和Intent.getClipData()
。可以是字串值,請使用「\\;」逸出「\\n」等字元或 「\\uxxxx」用於萬國碼 (Unicode) 字元;
必須是下列其中一個常數值。
常數 值 說明 none 0 預設值,不需要特定權限。 讀取 1 強制叫用者俱備所傳遞內容 URI 的讀取權限。 讀取和寫入 4 強制叫用者俱備傳遞的內容 URI 的讀取和寫入權限。 讀取或寫入 3 強制叫用者對傳遞的內容 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) 以上版本,裝置製造商可以設定個別裝置 螢幕 (例如平板電腦大小的摺疊式裝置螢幕) 就會忽略這項建議 強制將活動加上黑邊,以符合使用者偏好的裝置螢幕方向。這個 導致活動方向符合要求,因此活動方向不需要使用者 手動旋轉裝置
在多視窗模式下,要求的方向並不是整體的建議操作 方向。如果活動是 上下黑邊、 方向會影響套用至活動的上下黑邊。
這個值可以是下列任一字串:
"unspecified"
預設值。系統選擇方向。政策 因此在特定情境下所做的選擇 在不同裝置間切換 "behind"
方向會與活動堆疊中緊位於該活動下方的活動相同。 "landscape"
橫向(顯示的寬度大於高度)。 "portrait"
縱向(顯示的高度大於寬度)。 "reverseLandscape"
橫向方向與一般橫向相反。 已新增至 API 等級 9。 "reversePortrait"
直向方向與一般直向相反。 已新增至 API 等級 9。 "sensorLandscape"
橫向,但可根據裝置感應器調整為以一般/相反橫向顯示。即便使用者已鎖定感應器旋轉功能,還是會用到感應器。 已新增至 API 等級 9。 "sensorPortrait"
直向,但可根據裝置感應器調整為以一般/相反直向顯示。即便使用者已鎖定感應器旋轉功能,還是會用到感應器。但是,取決於 裝置設定,可能無法支援上下旋轉。 已新增至 API 等級 9。 "userLandscape"
橫向,但可根據裝置感應器和使用者偏好設定調整為以一般/相反橫向顯示。已新增至 API 等級 18。 "userPortrait"
直向,但可根據裝置感應器和使用者偏好設定調整為以一般/相反直向顯示。然而,視裝置設定而定,上下顛倒 就無法旋轉 已新增至 API 等級 18。 "sensor"
裝置方向感應器會決定螢幕方向。SDK 的方向 都取決於使用者手持裝置的方式。當使用者旋轉 裝置。不過,某些裝置預設不會旋轉到全部四種可能的方向。目的地: 請使用全部四個方向,請使用 "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
活動具有相依性的任務。設有以下應用程式的活動: 概念上都屬於同一任務 「應用程式」從使用者的角度來看任務的相依性 取決於其根活動的相依性。
相依性決定了兩件事:活動會更改為父項的任務 ,請參閱
allowTaskReparenting
屬性以及啟動活動時用於容納活動的任務FLAG_ACTIVITY_NEW_TASK
旗標。根據預設,應用程式中的所有活動都有相同的相依性。您可以設定這個屬性,以不同方式將活動分組,甚至可以將不同應用程式中定義的活動放在同一個任務中。目的地: 指定活動對任何任務沒有相依性,請設定 字串形式
如果未設定這項屬性,活動就會沿用相依性設定 應用程式。詳情請參閱
<application>
元素的taskAffinity
屬性。應用程式預設相依性的名稱是在build.gradle
檔案中設定的命名空間。android:theme
- 參照對定義活動整體主題的風格資源。這麼做會自動設定活動的內容
theme
,可能也會顯示 造成「開始」在活動啟動前套用動畫效果 與活動的實際模樣相符如果未設定這項屬性,活動就會沿用您為 和整個應用程式
<application>
元素的theme
屬性。如果未設定這項屬性,則會使用預設的系統主題。如要 詳情請參閱「樣式與主題」。 android:uiOptions
活動 UI 的額外選項。必須是下列其中一個值。
值 說明 "none"
沒有額外的 UI 選項。此為預設值。 "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-07-24 (世界標準時間)。
[]
[]
{
"last_modified": "上次更新時間:2024-07-24 (世界標準時間)。",
"state": ""
}