AndroidManifest.xml文件詳解(activity)(四)

 android:multiprocess
這個屬性用於設置Activity的實例能否被加載到與啟動它的那個組件所在的進程中,如果設置為true,則可以,否則不可以。默認值是false。
通常,一個新的Activity實例會被加載到定義它的應用程序的進程中,以便應用程序的所有Activity都運行在同一個進程中。但是,如果這個屬性被設置為true,那麼這個Activity的實例就可以運行在多個進程中,允許系統在使用它們的進程中來創建實例(權限許可的情況下),這幾乎是從來都不需要的事情。
android:name
這個屬性用於設置Activity的實現類(Activity的子類)的名字。這個屬性值應該是完整的Java類名,如:com.example.project.ExtracurricularActivity。但是,可以用簡寫的方式,名字第一個字符用“.”符號,如:.ExtracurricularActivity。它對應的包名是在<manifest>元素中指定的。
一旦發佈瞭應用程序,就不應該改變這個名稱瞭(除非設置瞭android:exported=”false”)。
這個屬性沒有默認值,名稱必須被指定。
android:noHistory
這個屬性用於設置在用戶離開該Activity,並且它在屏幕上不再可見的時候,它是否應該從Activity的堆棧被刪除。如果設置瞭true,則要刪除,否則不刪除。默認值是false。
如果設置為true,則意味著Activity不會保留歷史軌跡。也就是說,它不會保留在任務的Activity堆棧中,因此用戶不能夠在返回到這個Activity。
這個屬性在API Level 3中被引入。
android:permission
這個屬性用於設定啟動Activity的客戶端或者是響應一個Intent對象的請求所必須要有的權限。如果startActivity()方法或startActivityForResult()方法的調用者沒有被授予指定的權限,那麼它的Intent對象就不會發送給對應的Activity。
如果這個屬性沒有設置,那麼<application>元素中的permission屬性的設置就應用到Activity元素上。如果<application>元素也沒有設置,那麼這個Activity就不會受到權限的保護。
android:process
這個屬性用於設置Activity應該運行的那個進程的名字。通常,應用程序的所有組件都運行在為這個程序所創建的一個默認的進程中。它跟應用程序的包有相同的名字。<application>元素的process屬性能夠給所有的組件設置一個不同的默認值。但是每個組件都能夠覆蓋這個默認設置,允許把應用程序分離到多個進程中。
如果這個屬性名的值是用“:”開始,那麼在需要的時候,就會創建一個應用程序私有的新的進程,這個Activity就會運行在這個進程中。如果進程名使用小寫字母開頭,那麼在權限許可的情況下,該Activity會運行在用它命名的全局進程中。這樣就運行不同應用程序的組件能夠共享一個進程,從而減少資源的使用。
android:screenOrientation
這個屬性用於設置Activity在設備上顯示的方向。
屬性值可以是下表中列出的一個值:

unspecified 默認值,由系統來選擇方向。它的使用策略,以及由於選擇時特定的上下文環境,可能會因為設備的差異而不同。
user 使用用戶當前首選的方向。
behind 使用Activity堆棧中與該Activity之下的那個Activity的相同的方向。
landscape 橫向顯示(寬度比高度要大)
portrait 縱向顯示(高度比寬度要大)
reverseLandscape 與正常的橫向方向相反顯示,在API Level 9中被引入。
reversePortrait 與正常的縱向方向相反顯示,在API Level 9中被引入。
sensorLandscape 橫向顯示,但是基於設備傳感器,既可以是按正常方向顯示,也可以反向顯示,在API Level 9中被引入。
sensorPortrait 縱向顯示,但是基於設備傳感器,既可以是按正常方向顯示,也可以反向顯示,在API Level 9中被引入。
sensor 顯示的方向是由設備的方向傳感器來決定的。顯示方向依賴與用戶怎樣持有設備;當用戶旋轉設備時,顯示的方向會改變。但是,默認情況下,有些設備不會在所有的四個方向上都旋轉,因此要允許在所有的四個方向上都能旋轉,就要使用fullSensor屬性值。
fullSensor 顯示的方向(4個方向)是由設備的方向傳感器來決定的,除瞭它允許屏幕有4個顯示方向之外,其他與設置為“sensor”時情況類似,不管什麼樣的設備,通常都會這麼做。例如,某些設備通常不使用縱向倒轉或橫向反轉,但是使用這個設置,還是會發生這樣的反轉。這個值在API Level 9中引入。
nosensor 屏幕的顯示方向不會參照物理方向傳感器。傳感器會被忽略,所以顯示不會因用戶移動設備而旋轉。除瞭這個差別之外,系統會使用與“unspecified”設置相同的策略來旋轉屏幕的方向。

註意:在給這個屬性設置的值是“landscape”或portrait的時候,要考慮硬件對Activity運行的方向要求。正因如此,這些聲明的值能夠被諸如Google Play這樣的服務所過濾,以便應用程序隻能適用於那些支持Activity所要求的方向的設備。例如,如果聲明瞭“landscape”、“reverseLandscape”、或“sensorLandscape”,那麼應用程序就隻能適用於那些支持橫向顯示的設備。但是,還應該使用<uses-feature>元素來明確的聲明應用程序所有的屏幕方向是縱向的還是橫行的。例如:<uses-feature android:name=”android.hardware.screen.portrait”/>。這個設置由Google Play提供的純粹的過濾行為,並且在設備僅支持某個特定的方向時,平臺本身並不控制應用程序是否能夠被按照。
android:stateNotNeeded
這個屬性用於設置在沒有保存Activity狀態的情況下,它能否被銷毀且成功的重啟。如果設置為true,則不引用Activity之前的狀態就能夠被重啟,如果設置為false,重啟Activity時,則需要它之前的狀態。默認值是false。
通常,Activity在最終被關掉之前,會調用onSaveInstanceState()方法來保存資源。這個方法會用一個Bundle對象來保存Activity的當前狀態,然後在這個Activity被重啟時,再把這個Bundle對象傳遞給onCreate()方法。如果這個屬性設置為true,onSaveInstanceState()方法就可以不被調用,並且調用onCreate()方法時,會用null來代替Bundle對象,就像Activity被第一次重啟一樣。
設置為true,會確保Activity在缺省狀態下能夠被重啟。例如,在主屏顯示的Activity如果使用這個設置,即使由於某些原因導致Activity崩潰,也會確保它不會被刪除。
 

摘自 FireOfStar的專欄

發佈留言