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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章