基於TV settings和SettingsProvider
Android啟動模式對activity行為的影響
AndroidManifest.xml文件詳解
Manifest文件中,application和activity標簽屬性詳解
android之manifest.xml內provider詳解
coreApp
<manifest
···
coreApp="true"
···
</manifest>
- 在manifest中增加該屬性,其實並不是代表該APP具有系統權限,而是把該類app歸類為核心APP,核心app其實也是最小
Android framework
系統。
android:supportsRtl
<application
···
android:supportsRtl="true"
··· >
- 聲明你的application是否願意支持從右到左(原來RTL就是
right-to-left
的縮寫...)的布局。如果設置為true,targetSdkVersion設置為17或更高,各種RTL的API將被激活,系統使用您的應用程序可以顯示RTL布局。如果targetSdkVersion設置為16或更低的設置為false,RTL的API將被忽略或沒有影響您的應用程序將具有相同的行為無論對用戶現場的選擇相關的布局方向(你的布局會從左至右)。此屬性的默認值是false。 - Android 4.1(Jelly Bean)在 TextView 和 EditText 元素里對
雙向文字順序
提供了有限的功能支持,允許應用程序在編輯和顯示字符的時候,能夠同時支持從左到右(LTR)以及從右到左(RTL)的排列格式。
android:configChanges
<activity
···
android:configChanges="keyboard|keyboardHidden|navigation"
··· >
- android中的組件Activity在manifest.xml文件中可以指定參數
android:ConfigChanges
,用於捕獲手機狀態的改變。 - 在Activity中添加了
android:configChanges
屬性,在當所指定屬性(Configuration Changes
)發生改變時,通知程序調用onConfigurationChanged()
函數。 - 設置方法:將下列字段用
|
符號分隔開,例如:locale|navigation|orientation
mcc
移動國家號碼,由三位數字組成,每個國家都有自己獨立的MCC,可以識別手機用戶所屬國家
mnc
移動網號,在一個國家或者地區中,用於區分手機用戶的服務商
locale
所在地區發生變化
touchscreen
觸摸屏已經改變。(這不應該常發生)
keyboard
鍵盤模式發生變化,例如:用戶接入外部鍵盤輸入
keyboardHidden
用戶打開手機硬件鍵盤
navigation
導航型發生了變化。(這不應該常發生)
orientation
設備旋轉,橫向顯示和豎向顯示模式切換
fontScale
全局字體大小縮放發生改變
android:priority
<intent-filter
···
android:priority="3"
··· >
</intent-filter>
- Android:priority執行優先級,默認為0,值越大優先級越高。
- 優先級的概念用於描述控件的 intent的filter的類型。這個屬性只對activity和 receivers是有意義的。
- 隱式調用activity的情況下:如果多個activity滿足響應的條件,系統只會觸發 priority高的那個activity。
- 有序廣播發出的情況下:如果多個receiver滿足響應的條件,系統會優先觸發prioriyt搞的那個receiver。
- priority必須是整數,默認是0,范圍是[-1000, 1000]
Android:clearTaskOnLaunch
<activity
···
android:clearTaskOnLaunch="true"
··· >
</activity>
- 假設有A,B兩個Activity,在AndroidManifest.xml中將A Activity的設置了
android:clearTaskOnLaunch="true"
然后A中的操作啟動了B,進入了B:
(1)如果此時用戶按了Home鍵回到主屏幕上,然后又點擊了主屏幕上的A的icon圖標啟動應用。那么此時不是進入B,而是進入了A
(2)如果用戶按了屏幕下方的”最近任務列表“鍵,調出最近任務列表中,出現的是B,用戶點擊,此時又進入的是B
以上就是設置了android:clearTaskOnLaunch="true"
后的Activity運行的細微差別。屬性android:clearTaskOnLaunch
,顧名思義,就是說,當設置此屬性為true時候,每一次啟動此Activity后,將清空以此Activity為根的Task
android:exported
<activity
···
android:exported="true"
··· />
- android:exported 是Android中的四大組件
Activity
,Service
,Provider
,Receiver
四大組件中都會有的一個屬性
總體來說它的主要作用是:是否支持其它應用調用當前組件。
默認值:如果包含有intent-filter默認值為true;沒有intent-filter默認值為false
excludeFromRecents
<activity
···
android:excludeFromRecents="true"
··· >
</activity>
android:excludeFromRecents="true"
,設置為true后,當用戶按了最近任務列表
時候,該Task不會出現在最近任務列表中,可達到隱藏應用的目的
android:windowSoftInputMode
<activity
···
android:windowSoftInputMode="stateVisible"
··· >
</activity>
- activity主窗口與軟鍵盤的交互模式,可以用來避免輸入法面板遮擋問題,Android1.5后的一個新特性。
這個屬性能影響兩件事情:
【一】當有焦點產生時,軟鍵盤是隱藏還是顯示
【二】是否減少活動主窗口大小以便騰出空間放軟鍵盤
它的設置必須是下面列表中的一個值,或一個state…
值加一個adjust…
值的組合。在任一組設置多個值——多個”state…”values,例如&mdash有未定義的結果。各個值之間用"|"分開。例如:
<activity Android:windowSoftInputMode="stateVisible|adjustResize". . . >
在這設置的值(除stateUnspecified
和adjustUnspecified
以外)將覆蓋在主題中設置的值
各值的含義:
【A】
stateUnspecified
:軟鍵盤的狀態並沒有指定,系統將選擇一個合適的狀態或依賴於主題的設置
【B】stateUnchanged
:當這個activity出現時,軟鍵盤將一直保持在上一個activity里的狀態,無論是隱藏還是顯示
【C】stateHidden
:用戶選擇activity時,軟鍵盤總是被隱藏
【D】stateAlwaysHidden
:當該Activity主窗口獲取焦點時,軟鍵盤也總是被隱藏的
【E】stateVisible
:軟鍵盤通常是可見的
【F】stateAlwaysVisible
:用戶選擇activity時,軟鍵盤總是顯示的狀態
【G】adjustUnspecified
:默認設置,通常由系統自行決定是隱藏還是顯示
【H】adjustResize
:該Activity總是調整屏幕的大小以便留出軟鍵盤的空間
【I】adjustPan
:當前窗口的內容將自動移動以便當前焦點從不被鍵盤覆蓋和用戶能總是看到輸入內容的部分
android:noHistory
<activity
···
android:noHistory="true"
··· >
</activity>
- noHistory:如果設置true,當離開activity並不可見時,此activity會從棧中移除並不留下記錄
- 默認值為false
android:enabled
<activity-alias
···
android:enabled="false"
··· >
</activity-alias>
- Android 系統能否實例化應用程序中的各組件 —
true
表示可以,false
表示不允許。 如果此值設為true
,則由每個組件的 enabled 屬性確定自身的啟用或禁用。 如果此值設為false
,則覆蓋組件的設置值;所有組件都將被禁用 - 默認值是true
android:targetActivity
<activity-alias
···
android:targetActivity=".users.RestrictedProfileActivity"
··· >
</activity-alias>
- 這個屬性用於設置通過別名所能夠激活的那個Activity的名字。這個名字必須跟它前面的
<activity>
元素的name屬性匹配。
android:finishOnCloseSystemDialogs
<activity
···
android:finishOnCloseSystemDialogs="true"
··· >
</activity>
- 當
關閉系統窗口
請求出現時是否銷毀Activity,true為銷毀
android:launchMode
<activity
···
android:launchMode="singleTop"
··· >
</activity>
- launchMode在多個Activity跳轉的過程中扮演着重要的角色,稱之為啟動模式。有如下四種:
standard
:不管有沒有已存在的實例,都生成新的實例
singleTop
:如果發現有對應的Activity實例正位於棧頂,則重復利用,不再生成新的實例
singleTask
:如果發現有對應的Activity實例,則使此Activity實例之上的其他Activity實例統統出棧,使此Activity實例成為棧頂對象,顯示到幕前
singleInstance
:比較復雜,詳見延伸閱讀
延伸閱讀:Activity的四種launchMode
android:killAfterRestore
<application
···
android:killAfterRestore="false"
··· >
</application>
- 在執行全系統的恢復操作時,配置恢復后相關的應用程序是否要被終止。 單個包的恢復操作不會導致程序被關閉。 全系統的恢復操作一般只會發生一次,即第一次配置手機時。 第三方應用程序通常不需要用到本屬性
- 默認值是
true
,表示全系統恢復過程中,應用程序在處理完數據后將被關閉
android:process
<application
···
android:process="system"
··· >
</application>
- 通過在聲明文件中設置
android:process
屬性,我們可以讓組件(例如Activity, Service等)和應用(Application)創建並運行於我們指定的進程中
android:allowClearUserData
<application
···
android:allowClearUserData="false"
··· >
</application>
- 是否給以用戶刪除用戶數據的權限
- 如果為true應用管理者就擁有清除數據的權限;false沒有
- 默認為true
android:backupAgent
<application
···
android:backupAgent="SettingsBackupAgent"
··· >
</application>
- 實現應用的備份代理的類名,BackupAgent的子類。這個屬性的名稱因該是全限定類名(如,
com.example.project.MyBackupAgent
)。但是,如果名稱的首字母被設置為點號,也可以為類名(如,.MyBackupAgent
), 他將被追加到在< manifest />
元素中定義的包名后 - 沒有默認值
android:multiprocess
<application
···>
<provider
···
android:multiprocess="false"
··· >
</application>
- 該屬性表示Activity的實例是否可以運行在啟動它的組件所在的應用程序進程中。如果可以,則為true,否則為false
- 默認值是false
android:authorities
<application
···>
<provider
···
android:authorities="settings"
··· >
</application>
- 標識內容提供器范圍內的數據URI的授權列表,有多個授權時,要用分號來分離每個授權
android:writePermission
<application
···>
<provider
···
android:writePermission="android.permission.WRITE_SETTINGS"
··· >
</application>
- 這個屬性用於設置修改內容提供器的數據時,客戶端所必須要有的權限
android:singleUser
<application
···>
<provider
···
android:singleUser="true"
··· >
</application>
- 表示單用戶,所有用戶使用的Activity是同一個,和singletop,singletask的區別是,無論如何啟動,他總是一個
android:initOrder
<application
···>
<provider
···
android:initOrder="100"
··· >
</application>
- 這個屬性用於定義內容提供器應該被實例化的順序,這個順序是相對與相同進程所擁有的其他內容提供器的。當內容提供器間有相互的依賴時,就需要設置這個屬性,以確保它們能夠按照其依賴的順序被創建。這個屬性值是一個簡單的整數,大的數字要被優先初始化