AndroidManifest.xml檔案詳解(activity)(一)

來源:互聯網
上載者:User

文法(SYNATX):

<activityandroid:allowTaskReparenting=["true" | "false"]
          android:alwaysRetainTaskState=["true" | "false"]
          android:clearTaskOnLaunch=["true" | "false"]
          android:configChanges=["mcc", "mnc", "locale",
                                 "touchscreen", "keyboard", "keyboardHidden",
                                 "navigation", "screenLayout", "fontScale", "uiMode",
                                 "orientation", "screenSize", "smallestScreenSize"]
          android:enabled=["true" | "false"]
          android:excludeFromRecents=["true" | "false"]
          android:exported=["true" | "false"]
          android:finishOnTaskLaunch=["true" | "false"]
          android:hardwareAccelerated=["true" | "false"]
          android:icon="drawable resource"
          android:label="string resource"
          android:launchMode=["multiple" | "singleTop" |
                              "singleTask" | "singleInstance"]
          android:multiprocess=["true" | "false"]
          android:name="string"
          android:noHistory=["true" | "false"] 
          android:permission="string"
          android:process="string"
          android:screenOrientation=["unspecified" | "user" | "behind" |
                                     "landscape" | "portrait" |
                                     "reverseLandscape" | "reversePortrait" |
                                     "sensorLandscape" | "sensorPortrait" |
                                     "sensor" | "fullSensor" | "nosensor"]
          android:stateNotNeeded=["true" | "false"]
          android:taskAffinity="string"
          android:theme="resource or theme"
          android:uiOptions=["none" | "splitActionBarWhenNarrow"]
          android:windowSoftInputMode=["stateUnspecified",
                                       "stateUnchanged", "stateHidden",
                                       "stateAlwaysHidden", "stateVisible",
                                       "stateAlwaysVisible", "adjustUnspecified",
                                       "adjustResize", "adjustPan"] >  
    . . .
</activity>

 

包含於(CONTAINED IN):

<application>

能夠包含的元素(CAN CONTAIN):

<intent-filter>

<meta-data>

說明(DESCRIPTION):

這個元素宣告了一個Activity(或Activity的子類),Activity實現了應用程式的可視化使用者介面部分。應用程式中所有的Activity都必須在資訊清單檔中用<activity>元素來聲明,沒有在資訊清單檔中聲明的Activity,系統不會看到,也不會運行它。

屬性(ATTRIBUTES):

android:allowTaskReparenting

這個屬性用於設定Activity能夠從啟動它的任務中轉移到另一個與啟動它的任務有親緣關係的任務中,轉移時機是在這個有親緣關係的任務被帶到前台的時候。如果設定了true,則能夠轉移,如果設定了false,則這個Activity必須要保留在啟動它的那個任務中。

如果這個屬性沒有設定,那麼其對應的<application>元素的allowTaskReparenting屬性值就會應用到這個Activity上。它的預設值是false。

通常,當Activity被啟動時,它會跟啟動它的任務關聯,並它的整個生命週期都會保持在那個任務中。但是當Activity的當前任務不在顯示時,可以使用這個屬性來強制Activity轉移到與當前任務有親緣關係的任務中。這種情況的典型應用是把應用程式的Activity轉移到與這個應用程式相關聯的主任務中。

例如,如果一個電子郵件訊息中包含了一個網頁的連結,點擊這個連結會啟動一個顯示這個網頁的Activity。但是,由e-mail任務部分啟動的這個Activity是由瀏覽器應用程式定義的。如果把它放到瀏覽器的任務中,那麼在瀏覽器下次啟動到前台時,這個網頁會被顯示,並且在e-mail任務再次顯示時,這個Activity有會消失。

Activity的親緣關係是由taskAffinity屬性定義的。通過讀取任務的根Activity的親緣關係來判斷任務的親緣關係。因此,通過定義,任務中的根Activity與任務有著相同的親緣關係。因此帶有singleTask或singleInstance啟動模式的Activity只能是任務的根節點,Activity的任務歸屬受限於standard和singleTop模式。

android:alwaysRetainTaskState

這個屬性用於設定Activity所屬的任務狀態是否始終由系統來維護。如果設定為true,則由系統來維護狀態,設定為false,那麼在某些情況下,系統會允許重設任務的初始狀態。預設值是false。這個屬性只對任務根節點的Activity有意義,其他所有的Activity都會被忽略。

通常,在某些情況中,當使用者從主屏中重新啟動一個任務時,系統會先清除任務(從堆棧中刪除根節點Activity之上的所有Activity)。

但是,當這個屬性被設定為true時,使用者會始終返回到這個任務的最後狀態,而不管中間經曆了哪些操作。這樣做是有好處的,例如,Web瀏覽器的應用就會保留很多使用者不想丟失的狀態,如多個被開啟的標籤頁。

android:clearTaskOnLaunch

這個屬性用於設定在從主屏中重啟任務時,處理根節點的Activity以外,任務中的其他所有的Activity是否要被刪除。如果設定為true,那麼任務根節點的Activity之上的所有Activity都要被清除,如果設定了false,就不會被清除。預設設定時false。這個屬性只對啟動新任務(或根Activity)的那些Activity有意義,任務中其他所有的Activity都會被忽略。

當這個屬性值被設定為true,使用者再次啟動任務時,任務根節點的Activity就會被顯示,而不管在任務的最後做了什麼,也不管任務使用Back按鈕,還是使用Home離開的。當這個屬性被設定為false時,在某些情況中這個任務的Activity可以被清除,但不總是這樣的。

例如,假設某人從主屏中啟動了Activity P,並且又從P中啟動了Activity Q。接下來使用者按下了Home按鈕,然後由返回到Activity P。通常使用者會看到Activity Q,因為這是在P的任務中所做的最後的事情。但是,如果P把這個屬性設定為true,那麼在使用者按下Home按鈕,任務被掛起時,Activity P之上的所有Activity(本例中是Activity Q)都會被刪除。因此當使用者再次返回到本任務時,使用者只能看到Activity P。

如果這個屬性和allowTaskReparenting屬性都被設定為true,那些被設定了親緣關係的Activity會被轉移到它們共用的親緣任務中,然後把剩下的Activity都給刪除。

 


摘自 FireOfStar的專欄

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.