AndroidManifest.xml配置文件選項詳解

AndroidManifest.xml下的一些屬性定義和用法:html

----------------------------------------------------------------------------------------------------------------------------------android

android:allowTaskReparenting        web

 

         用法<application android:allowTaskReparenting="true/false"></application>瀏覽器

是否容許activity更換從屬的任務,好比從短信息任務 切換到瀏覽器任務。app

用來標記Activity可否從啓動的Task移動到有着affinity的Task(當這個Task進入到前臺時)——「true」,表示能移動,「false」,表示它必須呆在啓動時呆在的那個Task裏。ide

        若是這個特性沒有被設定,設定到<application>元素上的allowTaskReparenting特性的值會應用到Activity上。默認值爲「false」。性能

       通常來講,當Activity啓動後,它就與啓動它的Task關聯,而且在那裏耗盡它的整個生命週期。噹噹前的Task再也不顯示時,你可使用這個特性來強制Activity移動到有着affinity的Task中。典型用法是:把一個應用程序的Activity移到另外一個應用程序的主Task中。xml

       例如,若是e-mail中包含一個web頁的連接,點擊它就會啓動一個Activity來顯示這個頁面。這個Activity是由Browser應用程序定義的,可是,如今它做爲e-mail Task的一部分。若是它從新宿主到Browser Task裏,當Browser下一次進入到前臺時,它就能被看見,而且,當e-mail Task再次進入前臺時,就看不到它了。htm

       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 被引入

 

原文地址:http://www.cnblogs.com/tt_mc/archive/2010/10/27/1862915.html

相關文章
相關標籤/搜索