android:installLocation简析
生活随笔
收集整理的這篇文章主要介紹了
android:installLocation简析
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
2019獨角獸企業(yè)重金招聘Python工程師標準>>>
在Froyo(android 2.2,API Level:8)中引入了android:installLocation.通過設置該屬性可以使得開發(fā)者以及用戶決定程序的安裝位置.
android:installLocation隸屬于AndroidManifest.XML中的manifest節(jié)點.如下所示:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ? ? ? ? ? package="string" ? ? ? ? ? android:sharedUserId="string" ? ? ? ? ? android:sharedUserLabel="string resource" ? ? ? ? ? android:versionCode="integer" ? ? ? ? ? android:versionName="string" ? ? ? ? ? android:installLocation=["auto" | "internalOnly" | "preferExternal"] > ? ? . . . </manifest> android:installLocation可以設置為"auto"、"internalOnly"、"preferExternal"三個值中的任何一個. auto:程序可能被安裝在外部存儲介質(zhì)上(例如:SD Card),但是默認會被安裝到手機內(nèi)存中.當手機內(nèi)存為空時,程序?qū)⒈话惭b到外部存儲介質(zhì)上.當程序安裝到手機上后,用戶 可以決定把程序放在外部儲介質(zhì)還是內(nèi)存中. internalOnly:默認值.當設置為該值時,程序只能被安裝在內(nèi)存中,如果內(nèi)存為空,則程序?qū)⒉荒艹晒Π惭b. preferExternal:將程序安裝在外部存儲介質(zhì)上,但是系統(tǒng)不保證程序一定會被安裝到外部存儲介質(zhì)上.當外部存儲介質(zhì)不可以或空時,程序?qū)⒈话惭b到內(nèi)存中.程序使用了for ward-locking機制時也將被安裝到內(nèi)存中,因為外部存儲不支持此機制.程序安裝后,用戶可以自由切換程序應該在外部還是內(nèi)部存儲介質(zhì)上. 注意:當程序使用了Google Play的Copy Protection特性時,只能安裝到內(nèi)存中. 當程序被安裝到外部存儲介質(zhì)時, ① .apk文件將被移動到外部存儲介質(zhì)上,但是程序的數(shù)據(jù)仍然會在內(nèi)存中 ② 保存.apk文件的容器將會使用一個隨機生成的密鑰進行加密,這樣只有安裝該程序的設置可以使用存在外部存儲介質(zhì)上的數(shù)據(jù). 警告:當外部存儲介質(zhì)被卸載時,安裝在該外部存儲介質(zhì)上的程序?qū)⒘⒖瘫唤K止掉! 向后兼容性: 聲明了android:installLocation,但android:minSdkVersion小于8時,我們使用不低于Froyo的AVD進行編譯,這樣在低于Froyo的系統(tǒng)中android:installLocation將被忽略,而不低于Fro yo的系統(tǒng)中將使用我們指定的android:installLocation. 當我們的程序具有如下行為時我們不應該將程序安裝到外部存儲介質(zhì)上 ①Service 正在運行的服務將被終止,當外部存儲介質(zhì)被重新加載時服務不會被重啟. ②Alarm Service 鬧鐘服務將被取消,開發(fā)者必須在外部存儲介質(zhì)重新加載后重新注冊鬧鐘服務. ③Input Method Engines 輸入法將被換成系統(tǒng)輸入法,當外部存儲介質(zhì)被重新加載后用戶可以通過系統(tǒng)設置來啟動我們的輸入法 ④Live Wallpapers 我們的動態(tài)壁紙將被替換為默認的動態(tài)壁紙.外部存儲介質(zhì)重載后,用戶可以更換回來. ⑤Live Folders 我們的動態(tài)文件夾將被移出. ⑥App Widgets 我們的小部件將被移出,通常只有系統(tǒng)重啟后我們的小部件才可用. ⑦Account Managers 使用AccountManager創(chuàng)建的賬戶將會消失,直至存儲介質(zhì)被重新加載. ⑧Sync Adapters 只有外部存儲介質(zhì)被重新加載時,我們的同步功能才可用 ⑨Device Administrators 我們的DeviceAdminReceiver將會失效 ⑩監(jiān)聽開機結(jié)束事件 系統(tǒng)會在加載外部存儲介質(zhì)之前發(fā)送ACTION_BOOT_COMPLETED廣播.因此安裝在外部存儲介質(zhì)的程序?qū)⒉荒芙邮荛_機廣播. 通常,只要我們沒有使用上述的特性,我們就可以將我們的程序安裝到外部存儲介質(zhì)上.例如,大的游戲程序.當我們的APK文件有幾M大時我們應該認真的考慮是否要將程序移動到外部存儲介質(zhì)上以幫助用戶節(jié)省內(nèi)存.轉(zhuǎn)載于:https://my.oschina.net/u/272065/blog/135792
總結(jié)
以上是生活随笔為你收集整理的android:installLocation简析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IOS内存管理2
- 下一篇: 使用mysql备份工具innobacku