Manifest.xml下的一些屬性定義和用法:
----------------------------------------------------------------------------------------------------------------------------------
android:allowTaskReparenting
用法<application android:allowTaskReparenting="true/false"></application>
是否允許activity更換從屬的任務,比如從簡訊息任務 切換到瀏覽器任務。
用來標記Activity能否從啟動的Task移動到有著affinity的Task(當這個Task進入到前台時)——“true”,表示能移動,“false”,表示它必須呆在啟動時呆在的那個Task裡。
如果這個特性沒有被設定,設定到<application>元素上的allowTaskReparenting特性的值會應用到Activity上。預設值為“false”。
一般來說,當Activity啟動後,它就與啟動它的Task關聯,並且在那裡耗盡它的整個生命週期。噹噹前的Task不再顯示時,你可以使用這個特性來強制Activity移動到有著affinity的Task中。典型用法是:把一個應用程式的Activity移到另一個應用程式的主Task中。
例如,如果e-mail中包含一個web頁的連結,點擊它就會啟動一個Activity來顯示這個頁面。這個Activity是由Browser應用程式定義的,但是,現在它作為e-mail Task的一部分。如果它重新宿主到Browser Task裡,當Browser下一次進入到前台時,它就能被看見,並且,當e-mail Task再次進入前台時,就看不到它了。
Actvity的affinity是由taskAffinity特性定義的。Task的affinity是通過讀取根Activity的affinity 決定。因此,根據定義,根Activity總是位於相同affinity的Task裡。由於啟動模式為“singleTask”和 “singleInstance”的Activity只能位於Task的底部,因此,重新宿主只能限於“standard”和“singleTop”模式。
----------------------------------------------------------------------------------------------------------------------------------
android:alwaysRetainTaskState
用法<activity android:alwaysRetainTaskState="true/false"></activity>
用來標記Activity所在的Task的狀態是否總是由系統來保持——“true”,表示總是;“false”,表示在某種情形下允許系統復原Task 到它的初始化狀態。預設值是“false”。這個特性只針對Task的根Activity有意義;對其它Activity來說,忽略之。
一般來說,特定的情形如當使用者從主畫面重新選擇這個Task時,系統會對這個Task進行清理(從stack中刪除位元於根Activity之上的所有Activivity)。典型的情況,當使用者有一段時間沒有訪問這個Task時也會這麼做,例如30分鐘。
然而,當這個特性設為“true”時,使用者總是能回到這個Task的最新狀態,無論他們是如何啟動的。這非常有用,例如,像Browser應用程式,這裡有很多的狀態(例如多個開啟的Tab),使用者不想丟失這些狀態。
----------------------------------------------------------------------------------------------------------------------------------
android:clearTaskOnLanunch
用法<activity android:clearTaskOnLanunch=”true/false”></activity>
用來標記是否從Task中清除所有的Activity,除了根Activity外(每當從主畫面重新啟動時)——“true”,表示總是清除至它的根 Activity,“false”表示不。預設值是“false”。這個特性只對啟動一個新的Task的Activity(根Activity)有意義; 對Task中其它的Activity忽略。
當這個值為“true”,每次使用者重新啟動這個Task時,都會進入到它的根Activity中,不管這個Task最後在做些什麼,也不管使用者是使用 BACK還是HOME離開的。當這個值為“false”時,可能會在一些情形下(參考alwaysRetainTaskState特性)清除Task的 Activity,但不總是。
假設,某人從主畫面啟動了Activity P,並從那裡遷移至Activity Q。接下來使用者按下HOME,然後返回Activity P。一般,使用者可能見到的是Activity Q,因為它是P的Task中最後工作的內容。然而,如果P設定這個特性為“true”,當使用者按下HOME並使這個Task再次進入前台時,其上的所有的 Activity(在這裡是Q)都將被清除。因此,當返回到這個Task時,使用者只能看到P。
如果這個特性和allowTaskReparenting都設定為“true”,那些能重新宿主的Activity會移動到共用affinity的Task中;剩下的Activity都將被拋棄,如上所述。
-----------------------------------------------------------------------------------------------------------------------------------
android:configChanges
當配置list發生修改時, 是否調用 onConfigurationChanged() 方法 比如 "locale|navigation|orientation".
舉例:在按下power鍵時,直接在應用程式裡onPause處理就好。當app是豎屏時,這樣處理沒問題。但是當app是橫屏時,按下power鍵,app會強制回到豎屏,並且會重新調用activity的onCreate。很多時候這不是預期結果,所以就會用到android:configChanges。
在設定檔裡設定android:configChanges=”keyboardHidden|orientation”,這樣在螢幕方向改變的時候就不會重新調用activity的onCreate()方法,而是調用onConfigurationChanged(),然後在activity裡面重在下。
@Override
public void onConfigurationChanged(Configuration newConfig){
super.onConfigurationChanged(newConfig);
if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){
//橫向
}else{
//豎向
}
}
-----------------------------------------------------------------------------------------------------------------------------------
android:enabled
activity 是否可以被執行個體化
用法:<activity android:enabled="true"></activity>
-----------------------------------------------------------------------------------------------------------------------------------
android:excludeFromRecents
是否可被顯示在最近開啟的activity列表裡
用法:<activity android:excludeFromRecents="true"></activity>
----------------------------------------------------------------------------------------------------------------------------------
android:exported
是否允許activity被其它程式調用
----------------------------------------------------------------------------------------------------------------------------------
android:finishOnTaskLaunch
用來標記當使用者再次啟動它的Task(在主畫面選擇這個Task)時已經存在的Activity執行個體是否要關閉(結束)——“true”,表示應該關閉,“false”表示不關閉。預設值是“false”。
如果這個特性和allowTaskReparenting都設定為“true”,這個特性勝出。Activity的affinity忽略。這個 Activity不會重新宿主,但是會銷毀。
----------------------------------------------------------------------------------------------------------------------------------
android.icon
用法:<application android:icon="@drawable/xx_icon"></application>,加在應用程式圖示
----------------------------------------------------------------------------------------------------------------------------------
android:label
定義了每個title欄的名稱,但是優先順序低於activity中的setTitle()
---------------------------------------------------------------------------------------------------------------------------------
android:launchMode
用於指示Activity如何啟動。這裡有四種模式,與Intent對象中的Activity Flags(FLAG_ACTIVITY_*變數)共同作用,來決定Activity如何啟動來處理Intent。它們是:
"standard"
"singleTop"
"singleTask"
"singleInstance"
預設模式是“standard”。
“standard”和“singleTop”為第一組,“singleTask”和“singleInstance”為第二組。
第一組可以被執行個體化很多次。這些執行個體可以屬於任何task並且可以位於activity stack的任何位置。典型的情況是,它們會進入調用startActivity()的Task(除非Intent對象包含 FLAG_ACTIVITY_NEW_TASK標誌,在這種情況下會選擇一個不同的Task——參考taskAffinity特性)。
--------------------------------------------------------------------------------------------------------------------------------
android:multiprocess
允許多進程
--------------------------------------------------------------------------------------------------------------------------------
android:name
activity的類名, 必須指定
-------------------------------------------------------------------------------------------------------------------------------
android:onHistory
是否需要移除這個activity當使用者切換到其他螢幕時。 這個屬性是 API level 3 中引入的
-------------------------------------------------------------------------------------------------------------------------------
android:permission
-------------------------------------------------------------------------------------------------------------------------------
android:process
一個activity運行時所在的進程名,所有程式組件運行在應用程式預設的進程中,這個進程名跟應用程式的包名一致。<application>中的元素process屬效能夠為所有組件設定一個新的預設值。但是任何組件都可以覆蓋這個預設值,允許你將你的程式放在多進程中運行。 如果這個屬性被分配的名字以:開頭,當這個activity運行時, 一個新的專屬於這個程式的進程將會被建立。如果這個進程名以小寫字母開頭,這個activity將會運行在全域的進程中,被它的許可所提供。
--------------------------------------------------------------------------------------------------------------------------------
android:screenOrientation
activity顯示的模式, "unspecified" 預設值 "landscape" 風景畫模式,寬度比高度大一些 "portrait" 肖像模式, 高度比寬度大。 "user" 使用者的設定 "behind" "sensor" "nosensor"
---------------------------------------------------------------------------------------------------------------------------------
android:stateNotNeeded
是否 activity被銷毀和成功重啟並不儲存狀態
----------------------------------------------------------------------------------------------------------------------------------
android:taskAffinity
activity的親屬關係, 預設情況同一個應用程式下的activity有相同的關係
--------------------------------------------------------------------------------------------------------------------------------
android:theme
activity的樣式主題, 如果沒有設定,則activity的主題樣式從屬於應用程式, 參見<application>元素的theme屬性
---------------------------------------------------------------------------------------------------------------------------------
android:windowSoftInputMode
activity主視窗與軟鍵盤的互動模式, 自從API level 3 被引入