語法:
<activity android:allowEmbedded=["true" | "false"]
android:allowTaskReparenting=["true" | "false"]
android:alwaysRetainTaskState=["true" | "false"]
android:autoRemoveFromRecents=["true" | "false"]
android:banner="drawable resource"
android:clearTaskOnLaunch=["true" | "false"]
android:configChanges=["mcc", "mnc", "locale",
"touchscreen", "keyboard", "keyboardHidden",
"navigation", "screenLayout", "fontScale",
"uiMode", "orientation", "screenSize",
"smallestScreenSize"]
android:documentLaunchMode=["intoExisting" | "always" |
"none" | "never"]
android:enabled=["true" | "false"]
android:excludeFromRecents=["true" | "false"]
android:exported=["true" | "false"]
android:finishOnTaskLaunch=["true" | "false"]
android:hardwareAccelerated=["true" | "false"]
android:icon="drawable resource"
android:label="string resource"
android:launchMode=["standard" | "singleTop" |
"singleTask" | "singleInstance"]
android:maxRecents="integer"
android:multiprocess=["true" | "false"]
android:name="string"
android:noHistory=["true" | "false"]
android:parentActivityName="string"
android:permission="string"
android:process="string"
android:relinquishTaskIdentity=["true" | "false"]
android:resizeableActivity=["true" | "false"]
android:screenOrientation=["unspecified" | "behind" |
"landscape" | "portrait" |
"reverseLandscape" | "reversePortrait" |
"sensorLandscape" | "sensorPortrait" |
"userLandscape" | "userPortrait" |
"sensor" | "fullSensor" | "nosensor" |
"user" | "fullUser" | "locked"]
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>
說明:聲明1個實現利用的部份可視化用戶界面的 Activity(1個 Activity子類)。 所有 Activity 都必須由清單文件中的 元素表示。 任何未在該處聲明的 Activity 都將對系統不可見,并且也永久不會被運行。
屬性:
android:allowEmbedded
表示該 Activity 可作為另外一 Activity 的嵌入式子項啟動。 它特別適用于子項所在的容器(如 Display)為另外一 Activity 所具有的情況。 例如,用于 Wear 自定義通知的 Activity 必須聲明此項,以便 Wear 在其上下文流中顯示 Activity,后者位于另外一進程中。
該屬性的默許值為 false。
android:allowTaskReparenting當啟動 Activity 的任務接下來轉至前臺時,Activity 是不是能從該任務轉移至與其有親和關系的任務 —“true”表示它可以轉移,“false”表示它仍須留在啟動它的任務處。
如果未設置該屬性,則對 Activity 利用由 元素的相應 allowTaskReparenting 屬性設置的值。 默許值為“false”。
正常情況下,當 Activity 啟動時,會與啟動它的任務關聯,并在其全部生命周期中1直留在該任務處。您可以利用該屬性強迫 Activity 在其當前任務不再顯示時將其父項更改成與其有親和關系的任務。該屬性通經常使用于使利用的 Activity 轉移至與該利用關聯的主任務。
例如,如果電子郵件包括網頁鏈接,則點擊鏈接會調出可顯示網頁的 Activity。 該 Activity 由閱讀器利用定義,但作為電子郵件任務的1部份啟動。 如果將其父項更改成閱讀器任務,它會在閱讀器下1次轉至前臺時顯示,當電子郵件任務再次轉至前臺時則會消失。
Activity 的親和關系由 taskAffinity 屬性定義。 任務的親和關系通過讀取其根 Activity 的親和關系來肯定。因此,依照定義,根 Activity 始終位于具有相同親和關系的任務當中。 由于具有“singleTask”或“singleInstance”啟動模式的 Activity 只能位于任務的根,因此更改父項僅限于“standard”和“singleTop”模式。 (另請參閱 launchMode 屬性。)
android:alwaysRetainTaskState系統是不是始終保持 Activity 所在任務的狀態 —“true”表示保持,“false”表示允許系統在特定情況下將任務重置到其初始狀態。 默許值為“false”。該屬性只對任務的根 Activity 成心義;對所有其他 Activity,均疏忽該屬性。
正常情況下,當用戶從主屏幕重新選擇某個任務時,系統會在特定情況下清除該任務(從根 Activity 之上的堆棧中移除所有 Activity)。 系統通常會在用戶1段時間(如 30 分鐘)內未訪問任務時履行此操作。
不過,如果該屬性的值是“true”,則不管用戶如何到達任務,將始終返回到最后狀態的任務。 例如,在網絡閱讀器這類存在大量用戶不愿失去的狀態(如多個打開的標簽)的利用中,該屬性會很有用。
android:autoRemoveFromRecents由具有該屬性的 Activity 啟動的任務是不是1直保存在概覽屏幕中,直至任務中的最后1個 Activity 完成為止。 若為 true,則自動從概覽屏幕中移除任務。 它會替換調用方使用的 FLAG_ACTIVITY_RETAIN_IN_RECENTS。 它必須是布爾值“true”或“false”。
android:banner1種為其關聯項提供擴大圖形化橫幅的可繪制資源。 將其與 標記聯用可為特定 Activity 提供默許橫幅,也可與 標記聯用,為所有利用 Activity 提供橫幅。
系統使用橫幅在 Android TV 主屏幕中表示利用。 由于橫幅只顯示在主屏幕中,因此只應由包括的 Activity 能夠處理 CATEGORY_LEANBACK_LAUNCHER Intent 的利用指定。
必須將該屬性設置為對包括圖象的可繪制資源的援用(例如 “@drawable/banner”)。 沒有默許橫幅。
如需了解詳細信息,請參閱“面向電視的 UI 模式”設計指南中的橫幅,和“電視利用入門指南”中的提供主屏幕橫幅。
android:clearTaskOnLaunch是不是每當從主屏幕重新啟動任務時都從中移除根 Activity 以外的所有 Activity —“true”表示始終將任務清除到只剩其根 Activity;“false”表示不做清除。 默許值為“false”。該屬性只對啟動新任務的 Activity(根 Activity)成心義;對任務中的所有其他 Activity,均疏忽該屬性。
當值為“true”時,每次用戶再次啟動任務時,不管用戶最后在任務中正在履行哪一個 Activity,也不管用戶是使用返回還是主屏幕按鈕離開,都會將用戶轉至任務的根 Activity。 當值為“false”時,可在某些情況下清除任務中的 Activity(請參閱 alwaysRetainTaskState 屬性),但并不是1律可以。
例如,假定有人從主屏幕啟動了 Activity P,然后從那里轉到 Activity Q。該用戶接著按了主屏幕按鈕,然后返回到 Activity P。正常情況下,用戶將看到 Activity Q,由于那是其最后在 P 的任務中履行的 Activity。 不過,如果 P 將此標志設置為“true”,則當用戶按下主屏幕將任務轉入后臺時,其上的所有 Activity(在本例中為 Q)都會被移除。 因此用戶返回任務時只會看到 P。
如果該屬性和 allowTaskReparenting 的值均為“true”,則如上所述,任何可以更改父項的 Activity 都將轉移到與其有親和關系的任務;其余 Activity 隨即被移除。
android:configChanges列出 Activity 將自行處理的配置更改。在運行時產生配置更改時,默許情況下會關閉 Activity 然后將其重新啟動,但使用該屬性聲明配置將禁止 Activity 重新啟動。 Activity 反而會保持運行狀態,并且系統會調用其 onConfigurationChanged() 方法。
注:應避免使用該屬性,并且只應在萬不得已的情況下使用。 如需了解有關如何正確處理配置更改而至重新啟動的詳細信息,請瀏覽處理運行時變更。
任何或所有以下字符串均是該屬性的有效值。多個值使用“|”分隔 — 例如,“locale|navigation|orientation”。
所有這些配置變更都可能影響利用看到的資源值。 因此,調用 onConfigurationChanged() 時,通常有必要再次獲得所有資源(包括視圖布局、可繪制對象等),以正確處理變化。
android:documentLaunchMode指定每次啟動任務時應如何向其中添加新的 Activity 實例。 該屬性允許用戶讓多個來自同1利用的文檔出現在概覽屏幕中。
該屬性有4個值,會在用戶使用該利用打開文檔時產生以下效果:
“intoExisting” Activity 會為文檔重復使用現有任務。使用該值與不設置 FLAG_ACTIVITY_MULTIPLE_TASK 標志、但設置 FLAG_ACTIVITY_NEW_DOCUMENT 標志所產生的效果相同,如使用 Intent 標志添加任務中所述。
“always” Activity 為文檔創建新任務,即使文檔已打開也是如此。 這與同時設置 FLAG_ACTIVITY_NEW_DOCUMENT 和 FLAG_ACTIVITY_MULTIPLE_TASK 標志的效果相同。
“none” 該 Activity 不會為 Activity 創建新任務。這是默許值,它只會在設置了 FLAG_ACTIVITY_NEW_TASK 時創建新任務。 概覽屏幕將按其默許方式對待此 Activity:為利用顯示單個任務,該任務將從用戶上次調用的任意 Activity 開始繼續履行。
“never” 即便 Intent 包括 FLAG_ACTIVITY_NEW_DOCUMENT,該 Activity 也不會啟動到新文檔當中。 設置此值會替換 FLAG_ACTIVITY_NEW_DOCUMENT 和 FLAG_ACTIVITY_MULTIPLE_TASK 標志的行動(如果在 Activity 中設置了其中1個標志),并且概覽屏幕將為利用顯示單個任務,該任務將從用戶上次調用的任意 Activity 開始繼續履行。
注:對除“none”和“never”之外的值,必須使用 launchMode=”standard” 定義 Activity。 如果未指定此屬性,則使用 documentLaunchMode=”none”。
android:enabled系統是不是可將 Activity 實例化 — “true” 表示可以,“false”表示不可以。 默許值為“true”。
元素具有自己的 enabled 屬性,該屬性適用于所有利用組件,包括 Activity。 和 屬性必須都是“true”(由于它們都默許使用該值),系統才能將 Activity 實例化。 如果任何1個屬性是“false”,則沒法進行實例化。
android:excludeFromRecents是不是應將該 Activity 啟動的任務排除在最近使用的利用列表(即概覽屏幕)以外。 也就是說,當該 Activity 是新任務的根 Activity 時,此屬性肯定任務是不是應出現在最近使用的利用列表中。 如果應將任務排除在列表以外,請設置“true”;如果應將其包括在內,則設置“false”。 默許值為“false”。
android:exportedActivity 是不是可由其他利用的組件啟動 —“true”表示可以,“false”表示不可以。若為“false”,則 Activity 只能由同1利用的組件或使用同1用戶 ID 的不同利用啟動。
默許值取決于 Activity 是不是包括 Intent 過濾器。沒有任何過濾器意味著 Activity 只能通過指定其確切的類名稱進行調用。 這意味著 Activity 專供利用內部使用(由于其他利用不知曉其類名稱)。 因此,在這類情況下,默許值為“false”。另外一方面,最少存在1個過濾器意味著 Activity 專供外部使用,因此默許值為“true”。
該屬性并不是限制 Activity 對其他利用開放度的唯1手段。 您還可以利用權限來限制哪些外部實體可以調用 Activity(請參閱 permission 屬性)。
android:finishOnTaskLaunch每當用戶再次啟動其任務(在主屏幕上選擇任務)時,是不是應關閉(完成)現有 Activity 實例 —“true”表示應關閉,“false”表示不應關閉。 默許值為“false”。
如果該屬性和 allowTaskReparenting 均為“true”,則優先使用該屬性。 Activity 的親和關系會被疏忽。 系統不是更改 Activity 的父項,而是將其燒毀。
android:hardwareAccelerated是不是應為此 Activity 啟用硬件加速渲染 —“true”表示應啟用,“false”表示不應啟用。 默許值為“false”。
從 Android 3.0 開始,為利用提供了硬件加速 OpenGL 渲染器,以改良許多常見 2D 圖形運算的性能。 啟用硬件加速渲染器時,Canvas、Paint、Xfermode、ColorFilter、Shader 和 Camera 中的大多數運算都會得到加速。這可以提高動畫、轉動的流暢度和整體響應速度,即使是其實不明確使用框架 OpenGL 庫的利用也會受益。 由于啟用硬件加速會增加資源消耗,因此您的利用將占用更多內存。
請注意,并不是所有 OpenGL 2D 運算都會得到加速。如果您啟用硬件加速渲染器,請對利用進行測試,以確保其在利用渲染器時不會出錯。
android:icon1個表示 Activity 的圖標。該圖標會在需要在屏幕上表示 Activity 時顯示給用戶。 例如,代表啟動任務的 Activity 的圖標顯示在啟動器窗口中。該圖標通常附帶標簽(請參閱 android:label 屬性)。
必須將該屬性設置為對包括圖象定義的可繪制資源的援用。 如果未設置該屬性,則改成使用為利用整體指定的圖標(請參閱 元素的 icon 屬性)。
這個 Activity 的圖標 — 不管設置于此處還是由 元素設置 — 同時也是 Activity 所有 Intent 過濾器的默許圖標(請參閱 元素的 icon 屬性)。
android:label1種可由用戶讀取的 Activity 標簽。該標簽會在必須將 Activity 顯現給用戶時顯示在屏幕上。 它通常與 Activity 圖標1并顯示。
如果未設置該屬性,則改成使用為利用整體設置的標簽(請參閱 元素的 label 屬性)。
這個 Activity 的標簽 — 不管設置于此處還是由 元素設置 — 同時也是 Activity 所有 Intent 過濾器的默許標簽(請參閱 元素的 label 屬性)。
應將該標簽設置為對字符串資源的援用,以即可以像用戶界面中的其他字符串那樣進行本地化。不過,為便于您開發利用,也可將其設置為原始字符串。
android:launchMode有關應如何啟動 Activity 的指令。共有4種模式與 Intent 對象中的 Activity 標志(FLAG_ACTIVITY_* 常量)協同工作,以肯定在調用 Activity 處理 Intent 時應履行的操作。 這些模式是:
“standard”
“singleTop”
“singleTask”
“singleInstance”
默許模式是“standard”。
以下表所示,這些模式分為兩大類,“standard”和“singleTop”Activity 為1類,“singleTask”和“singleInstance”為另外一類。使用“standard”或“singleTop”啟動模式的 Activity 可屢次實例化。 實例可歸屬任何任務,并且可以位于 Activity 堆棧中的任何位置。 它們通常啟動到名為 startActivity() 的任務當中(除非 Intent 對象包括 FLAG_ACTIVITY_NEW_TASK 指令,在此情況下會選擇其他任務 — 請參閱 taskAffinity 屬性)。
相比之下,“singleTask”和“singleInstance”Activity 只能啟動任務。 它們始終位于 Activity 堆棧的根位置。另外,裝備1次只能保存1個 Activity 實例 — 只允許1個此類任務。
“standard”和“singleTop”模式只在1個方面有差異: 每次“standard”Activity 有新的 Intent 時,系統都會創建新的類實例來響應當 Intent。每一個實例處理單個 Intent。同理,也可創建新的“singleTop”Activity 實例來處理新的 Intent。 不過,如果目標任務在其堆棧頂部已有1個 Activity 實例,那末該實例將接收新 Intent(通過調用 onNewIntent());此時不會創建新實例。在其他情況下 — 例如,如果“singleTop”的1個現有實例雖在目標任務內,但未處于堆棧頂部,或雖然位于堆棧頂部,但不在目標任務中 — 則系統會創建1個新實例并將其推送到堆棧上。
同理,如果您向上導航到當前堆棧上的某個 Activity,該行動由父 Activity 的啟動模式決定。 如果父 Activity 有啟動模式 singleTop(或 up Intent 包括 FLAG_ACTIVITY_CLEAR_TOP),則系統會將該父項置于堆棧頂部,并保存其狀態。 導航 Intent 由父 Activity 的 onNewIntent() 方法接收。 如果父 Activity 有啟動模式 standard(并且 up Intent 不包括 FLAG_ACTIVITY_CLEAR_TOP),則系統會將當前 Activity 及其父項同時彈出堆棧,并創建1個新的父 Activity 實例來接收導航 Intent。
“singleTask”和“singleInstance”模式一樣只在1個方面有差異: “singleTask”Activity 允許其他 Activity 成為其任務的組成部份。 它始終位于其任務的根位置,但其他 Activity(必定是“standard”和“singleTop”Activity)可以啟動到該任務中。 相反,“singleInstance”Activity 則不允許其他 Activity 成為其任務的組成部份。它是任務中唯1的 Activity。 如果它啟動另外一個 Activity,系統會將該 Activity 分配給其他任務 — 就好像 Intent 中包括 FLAG_ACTIVITY_NEW_TASK 1樣。
如上表所示,standard 是默許模式,并且適用于大多數的 Activity 類型。對許多類型的 Activity 而言,SingleTop 也是1個常見并且有用的啟動模式。 其他模式 — singleTask 和 singleInstance - 不合適 大多數利用由于它們所構成的交互模式可能讓用戶感到陌生,并且與大多數其他利用懸殊。
不管您選擇哪種啟動模式,請務必在啟動期間和使用返回按鈕從其他 Activity 和任務返回該 Activity 時對其進行易用性測試。
如需了解有關啟動模式及其與 Intent 標志交互的詳細信息,請參閱任務和返回棧文檔。
android:maxRecents概覽屏幕中位于此 Activity 根位置的任務數上限。 到達該條目數時,系統會從概覽屏幕中移除最近最少使用的實例。 有效值為 1⑸0(低內存裝備使用 25);0 為無效值。 該值必須是整數,例如 50。默許值為 16。
android:multiprocess是不是可以將 Activity 實例啟動到啟動該實例的組件進程內 —“true”表示可以,“false”表示不可以。默許值為“false”。
正常情況下,新的 Activity 實例會啟動到定義它的利用進程內,因此所有 Activity 實例都在同1進程內運行。 不過,如果該標志設置為“true”,Activity 實例即可在多個進程內運行,這樣系統就可以在任何使用實例的地方創建實例(條件是權限允許這樣做),但這幾近毫無必要性或可取的地方。
android:name實現 Activity 的類的名稱,是 Activity 的子類。 該屬性值應為完全限定類名稱(例如,“com.example.project.ExtracurricularActivity”)。不過,為了簡便起見,如果名稱的第1個字符是句點(例如,“.ExtracurricularActivity”),則名稱將追加到 元素中指定的軟件包名稱。
利用1旦發布,即不應更改該名稱(除非您設置了 android:exported=”false”)。
沒有默許值。必須指定該名稱。
android:noHistory當用戶離開 Activity 并且其在屏幕上不再可見時,是不是應從 Activity 堆棧中將其移除并完成(調用其 finish() 方法)—“true”表示應將其完成,“false”表示不應將其完成。 默許值為“false”。
“true”1值表示 Activity 不會留下歷史軌跡。 它不會留在任務的 Activity 堆棧內,因此用戶將沒法返回 Activity。 在此情況下,如果您啟動另外一個 Activity 來獲得該 Activity 的結果,系統永久不會調用 onActivityResult()。
該屬性是在 API 級別 3 引入的。
android:parentActivityNameActivity 邏輯父項的類名稱。此處的名稱必須與為相應 元素的 android:name 屬性指定的類名稱1致。
系統會讀取該屬性,以肯定當用戶按下操作欄中的“向上”按鈕時應當啟動哪個 Activity。 系統還可以利用這些信息通過 TaskStackBuilder 合成 Activity 的返回棧。
要支持 API 級別 4 - 16,您還可使用為 “android.support.PARENT_ACTIVITY” 指定值的 元夙來聲明父 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>
如需了解有關聲明父 Activity 以支持向上導航的詳細信息,請瀏覽提供向上導航。
該屬性是在 API 級別 16 引入的。
android:permission客戶端啟動 Activity 或以其他方式令其響應 Intent 而必須具有的權限的名稱。 如果系統還沒有向 startActivity() 或 startActivityForResult() 的調用方授與指定權限,其 Intent 將不會傳遞給 Activity。
如果未設置該屬性,則對 Activity 利用 元素的 permission 屬性設置的權限。 如果這兩個屬性均未設置,則 Activity 不受權限保護。
如需了解有關權限的詳細信息,請參閱簡介的權限1節和另外一份文檔安全與權限。
android:process應在其中運行 Activity 的進程的名稱。正常情況下,利用的所有組件都在為利用創建的默許進程名稱內運行,您無需使用該屬性。 但在必要時,您可使用該屬性替換默許進程名稱,以便讓利用組件散布到多個進程中。
如果為該屬性分配的名稱以冒號(“:”)開頭,則會在需要時創建利用專用的新進程,并且 Activity 會在該進程中運行。如果進程名稱以小寫字符開頭,Activity 將在該名稱的全局進程中運行,條件是它具有相應的權限。這可讓不同利用中的組件同享1個進程,從而減少資源占用。
元素的 process 屬性可為所有組件設置1個不同的默許進程名稱。
android:relinquishTaskIdentityActivity 是不是將其任務標識符交給任務棧中在其之上的 Activity。 如果任務根 Activity 的該屬性設置為“true”,則任務會用其內的下1個 Activity 的 Intent 替換基本 Intent。 如果下1個 Activity 的該屬性也設置為“true”,則該 Activity 會將基本 Intent 給予其在同1任務中啟動的任何 Activity。 系統繼續為每一個 Activity 履行此進程,直至遇到的某個 Activity 將該屬性設置為“false”為止。 默許值為“false”。
如果該屬性設置為“true”,則 Activity 還可利用 ActivityManager.TaskDescription 來更改概覽屏幕中的標簽、色彩和圖標。
resizeableActivity
指定利用是不是支持多窗口顯示。您可以在 或 元素中設置該屬性。
如果您將該屬性設置為 true,則用戶可以分屏和自由形狀模式啟動 Activity。 如果您將該屬性設置為 false,Activity 將不支持多窗口模式。 如果該值為 false,且用戶嘗試在多窗口模式下啟動 Activity,該 Activity 將全屏顯示。
如果您的利用面向 API 級別 24 或更高級別,但未對該屬性指定值,則該屬性的值默許設為 true。
該屬性是在 API 級別 24 添加的。
android:screenOrientationActivity 在裝備上的顯示方向。如果 Activity 是在多窗口模式下運行,系統會疏忽該屬性。
其值可以是以下任1字符串:
注:如果您聲明其中1個橫向或縱向值,系統將其視為對 Activity 運行方向的硬性要求。 因此,您聲明的值支持通過 Google Play 之類的服務進行過濾,這樣就可以將您的利用只提供給支持 Activity 所要求方向的裝備。 例如,如果您聲明了 “landscape”、”reverseLandscape” 或 “sensorLandscape”,則您的利用將只提供給支持橫向方向的裝備。 不過,您還應通過 元素明確聲明,您的利用要求采取縱向或橫向方向。 例如,。這純潔是 Google Play(和其他支持它的服務)提供的1種過濾行動,平臺本身其實不能控制當裝備僅支持特定方向時您的利用能否安裝。
android:stateNotNeeded能否在不保存 Activity 狀態的情況下將其終止并成功重新啟動 —“true”表示可在不斟酌其之前狀態的情況下重新啟動,“false”表示需要之前狀態。 默許值為“false”。
正常情況下,為保存資源而暫時關閉 Activity 前,系統會調用其 onSaveInstanceState() 方法。 該方法將 Activity 確當前狀態存儲在1個 Bundle 對象中,然后在 Activity 重新啟動時將其傳遞給 onCreate()。 如果該屬性設置為“true”,系統可能不會調用 onSaveInstanceState(),并且會向 onCreate() 傳遞 null 而不是 Bundle - 這與它在 Activity 首次啟動時完全1樣。
“true”設置可確保 Activity 能夠在未保存狀態時重新啟動。 例如,顯示主屏幕的 Activity 可使用該設置來確保其由于某種緣由崩潰時不會被移除。
supportsPictureInPicture
指定 Activity 是不是支持畫中畫 顯示。如果 android:resizeableActivity 是 false,系統會疏忽該屬性。
該屬性是在 API 級別 24 添加的。
android:taskAffinity與 Activity 有著親和關系的任務。從概念上講,具有相同親和關系的 Activity 歸屬同1任務(從用戶的角度來看,則是歸屬同1“利用”)。 任務的親和關系由其根 Activity 的親和關系肯定。
親和關系肯定兩件事 - Activity 更改到的父項任務(請參閱 allowTaskReparenting 屬性)和通過 FLAG_ACTIVITY_NEW_TASK 標志啟動 Activity 時將用來容納它的任務。
默許情況下,利用中的所有 Activity 都具有相同的親和關系。您可以設置該屬性來以不同方式組合它們,乃至可以將在不同利用中定義的 Activity 置于同1任務內。 要指定 Activity 與任何任務均無親和關系,請將其設置為空字符串。
如果未設置該屬性,則 Activity 繼承為利用設置的親和關系(請參閱 元素的 taskAffinity 屬性)。 利用默許親和關系的名稱是 元素設置的軟件包名稱。
android:theme對定義 Activity 整體主題的樣式資源的援用。它會自動將 Activity 的上下文設置為使用該主題(請參閱 setTheme()),它還可以引發 Activity 啟動前的“啟動”動畫(以更加符合 Activity 的實際外觀)。
如果未設置該屬性,則 Activity 繼承通過 元素的 theme 屬性為利用整體設置的主題。 如果該屬性也未設置,則使用默許系統主題。如需了解詳細信息,請參閱樣式和主題開發者指南。
android:uiOptions針對 Activity UI 的附加選項。
必須是以下值之1。
“none” 無附加 UI 選項。這是默許值。
“splitActionBarWhenNarrow” 當水憑空間受限時(例如在手持裝備上的縱向模式下時)在屏幕底部添加1個欄以顯示利用欄(也稱為操作欄)中的操作項)。 利用欄不是以少許操作項情勢出現在屏幕頂部的利用欄中,而是分成了頂部導航區和底部操作項欄。 這可以確保操作項和頂部的導航和標題元素都能取得公道的空間。 菜單項不會拆分到兩個欄中,它們始終1起出現。
如需了解有關利用欄的詳細信息,請參閱添加利用欄培訓課。
該屬性是在 API 級別 14 添加的。
android:windowSoftInputModeActivity 的主窗口與包括屏幕軟鍵盤的窗口的交互方式。 該屬性的設置影響兩個方面: ?當 Activity 成為用戶注意的焦點時軟鍵盤的狀態 — 隱藏還是可見。
?對 Activity 主窗口所做的調劑 — 是不是將其尺寸調小以為軟鍵盤騰出空間,或當窗口部份被軟鍵盤遮擋時是不是平移其內容以使當前焦點可見。
該設置必須是下表所列的值之1,或是1個“state…”值加上1個“adjust…”值的組合。 在任1組中設置多個值(例如,多個“state…”值)都會產生未定義結果。各值之間使用垂直條 (|) 分隔。 例如:
<activity android:windowSoftInputMode="stateVisible|adjustResize" . . . >
此處設置的值(“stateUnspecified”和“adjustUnspecified”除外)替換主題中設置的值。
該屬性是在 API 級別 3 引入的。
引入的版本:API 級別 1,為 noHistory 和 windowSoftInputMode 以外的所有屬性引入,這兩個屬性則是在 API 級別 3 中增加。
下一篇 Java Thread 總結