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


android:alwaysRetainTaskState
用法<activity android:alwaysRetainTaskState="true/false"</activity>
用來標記Activity所在的Task的狀態是否老是由系統來保持——「true」,表示老是;「false」,表示在某種情形下容許系統恢復Task 到它的初始化狀態。默認值是「false」。這個特性只針對Task的根Activity有意義;對其它Activity來講,忽略之。web

通常來講,特定的情形如當用戶從主畫面從新選擇這個Task時,系統會對這個Task進行清理(從stack中刪除位於根Activity之上的全部Activivity)。典型的狀況,當用戶有一段時間沒有訪問這個Task時也會這麼作,例如30分鐘。
然而,當這個特性設爲「true」時,用戶老是能回到這個Task的最新狀態,不管他們是如何啓動的。這很是有用,例如,像Browser應用程序,這裏有不少的狀態(例如多個打開的Tab),用戶不想丟失這些狀態。瀏覽器


android:clearTaskOnLanunchapp

用法<activity android:clearTaskOnLanunch=」true/false」></activity>ide

用來標記是否從Task中清除全部的Activity,除了根Activity外(每當從主畫面從新啓動時)——「true」,表示老是清除至它的根 Activity,「false」表示不。默認值是「false」。這個特性只對啓動一個新的Task的Activity(根Activity)有意義; 對Task中其它的Activity忽略。性能

當這個值爲「true」,每次用戶從新啓動這個Task時,都會進入到它的根Activity中,無論這個Task最後在作些什麼,也無論用戶是使用 BACK仍是HOME離開的。當這個值爲「false」時,可能會在一些情形下(參考alwaysRetainTaskState特性)清除Task的 Activity,但不老是。code

假設,某人從主畫面啓動了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 被引入

相關文章
相關標籤/搜索