android Manifest.xml選項

來源:互聯網
上載者:User

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.