Android編程實(shí)現(xiàn)將應(yīng)用強(qiáng)制安裝到手機(jī)內(nèi)存的方法
本文實(shí)例講述了Android編程實(shí)現(xiàn)將應(yīng)用強(qiáng)制裝到手機(jī)內(nèi)存的方法。分享給大家供大家參考,具體如下:
在Froyo(android 2.2,API Level:8)中引入了android:installLocation.通過(guò)設(shè)置該屬性可以使得開(kāi)發(fā)者以及用戶決定程序的安裝位置.
android:installLocation隸屬于AndroidManifest.XML中的manifest節(jié)點(diǎn).如下所示:
<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可以設(shè)置為"auto"、"internalOnly"、"preferExternal"三個(gè)值中的任何一個(gè).
auto:程序可能被安裝在外部存儲(chǔ)介質(zhì)上(例如:SD Card),但是默認(rèn)會(huì)被安裝到手機(jī)內(nèi)存中.當(dāng)手機(jī)內(nèi)存為空時(shí),程序?qū)⒈话惭b到外部存儲(chǔ)介質(zhì)上.當(dāng)程序安裝到手機(jī)上后,用戶 可以決定把程序放在外部?jī)?chǔ)介質(zhì)還是內(nèi)存中.
internalOnly:默認(rèn)值.當(dāng)設(shè)置為該值時(shí),程序只能被安裝在內(nèi)存中,如果內(nèi)存為空,則程序?qū)⒉荒艹晒Π惭b.
preferExternal:將程序安裝在外部存儲(chǔ)介質(zhì)上,但是系統(tǒng)不保證程序一定會(huì)被安裝到外部存儲(chǔ)介質(zhì)上.當(dāng)外部存儲(chǔ)介質(zhì)不可以或空時(shí),程序?qū)⒈话惭b到內(nèi)存中.程序使用了for ward-locking機(jī)制時(shí)也將被安裝到內(nèi)存中,因?yàn)橥獠看鎯?chǔ)不支持此機(jī)制.程序安裝后,用戶可以自由切換程序應(yīng)該在外部還是內(nèi)部存儲(chǔ)介質(zhì)上.
注意:當(dāng)程序使用了Google Play的Copy Protection特性時(shí),只能安裝到內(nèi)存中.
當(dāng)程序被安裝到外部存儲(chǔ)介質(zhì)時(shí):
① .apk文件將被移動(dòng)到外部存儲(chǔ)介質(zhì)上,但是程序的數(shù)據(jù)仍然會(huì)在內(nèi)存中
② 保存.apk文件的容器將會(huì)使用一個(gè)隨機(jī)生成的密鑰進(jìn)行加密,這樣只有安裝該程序的設(shè)置可以使用存在外部存儲(chǔ)介質(zhì)上的數(shù)據(jù).
警告:當(dāng)外部存儲(chǔ)介質(zhì)被卸載時(shí),安裝在該外部存儲(chǔ)介質(zhì)上的程序?qū)⒘⒖瘫唤K止掉!
向后兼容性:
聲明了android:installLocation,但android:minSdkVersion小于8時(shí),我們使用不低于Froyo的AVD進(jìn)行編譯,這樣在低于Froyo的系統(tǒng)中android:installLocation將被忽略,而不低于Fro yo的系統(tǒng)中將使用我們指定的android:installLocation.
當(dāng)我們的程序具有如下行為時(shí)我們不應(yīng)該將程序安裝到外部存儲(chǔ)介質(zhì)上:
①Service
正在運(yùn)行的服務(wù)將被終止,當(dāng)外部存儲(chǔ)介質(zhì)被重新加載時(shí)服務(wù)不會(huì)被重啟.
②Alarm Service
鬧鐘服務(wù)將被取消,開(kāi)發(fā)者必須在外部存儲(chǔ)介質(zhì)重新加載后重新注冊(cè)鬧鐘服務(wù).
③Input Method Engines
輸入法將被換成系統(tǒng)輸入法,當(dāng)外部存儲(chǔ)介質(zhì)被重新加載后用戶可以通過(guò)系統(tǒng)設(shè)置來(lái)啟動(dòng)我們的輸入法
④Live Wallpapers
我們的動(dòng)態(tài)壁紙將被替換為默認(rèn)的動(dòng)態(tài)壁紙.外部存儲(chǔ)介質(zhì)重載后,用戶可以更換回來(lái).
⑤Live Folders
我們的動(dòng)態(tài)文件夾將被移出.
⑥App Widgets
我們的小部件將被移出,通常只有系統(tǒng)重啟后我們的小部件才可用.
⑦Account Managers
使用AccountManager創(chuàng)建的賬戶將會(huì)消失,直至存儲(chǔ)介質(zhì)被重新加載.
⑧Sync Adapters
只有外部存儲(chǔ)介質(zhì)被重新加載時(shí),我們的同步功能才可用
⑨Device Administrators
我們的DeviceAdminReceiver將會(huì)失效
⑩監(jiān)聽(tīng)開(kāi)機(jī)結(jié)束事件
系統(tǒng)會(huì)在加載外部存儲(chǔ)介質(zhì)之前發(fā)送ACTION_BOOT_COMPLETED廣播.因此安裝在外部存儲(chǔ)介質(zhì)的程序?qū)⒉荒芙邮荛_(kāi)機(jī)廣播.
通常,只要我們沒(méi)有使用上述的特性,我們就可以將我們的程序安裝到外部存儲(chǔ)介質(zhì)上.例如,大的游戲程序.當(dāng)我們的APK文件有幾M大時(shí)我們應(yīng)該認(rèn)真的考慮是否要將程序移動(dòng)到外部存儲(chǔ)介質(zhì)上以幫助用戶節(jié)省內(nèi)存.
希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。
- 解析Android獲取系統(tǒng)cpu信息,內(nèi)存,版本,電量等信息的方法詳解
- android獲取手機(jī)cpu并判斷是單核還是多核
- android downsample降低音頻采樣頻率代碼
- Android垃圾回收機(jī)制解決內(nèi)存泄露問(wèn)題
- Android操作系統(tǒng)之內(nèi)存回收策略
- Android實(shí)現(xiàn)仿360桌面懸浮清理內(nèi)存
- Android內(nèi)存優(yōu)化雜談
- Android編程實(shí)現(xiàn)獲得內(nèi)存剩余大小與總大小的方法
- Android編程實(shí)現(xiàn)應(yīng)用強(qiáng)制安裝到手機(jī)內(nèi)存的方法
- Android獲取設(shè)備CPU核數(shù)、時(shí)鐘頻率以及內(nèi)存大小的方法
相關(guān)文章
詳解android 人臉檢測(cè)你一定會(huì)遇到的坑
這篇文章主要介紹了詳解android 人臉檢測(cè)你一定會(huì)遇到的坑,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11
Android高級(jí)開(kāi)發(fā)之性能優(yōu)化典范
本文從電量,視圖,內(nèi)存三個(gè)性能方面的知識(shí)點(diǎn)給大家介紹android高級(jí)開(kāi)發(fā)之性能優(yōu)化的相關(guān)知識(shí),希望對(duì)大家有所幫助2016-05-05
Android TextWatcher三個(gè)回調(diào)以及監(jiān)聽(tīng)EditText的輸入案例詳解
這篇文章主要介紹了Android TextWatcher三個(gè)回調(diào)以及監(jiān)聽(tīng)EditText的輸入案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
Android實(shí)現(xiàn)淘寶選中商品尺寸的按鈕組實(shí)例
這篇文章介紹的是仿淘寶中的選中商品不同尺寸,比如衣服有L、M、XL等等的款式。這時(shí)候我們就需要一個(gè)button組來(lái)進(jìn)行了,當(dāng)時(shí)這個(gè)時(shí)候里面的尺寸可能有很多,那怎么辦呢?這里我們就肯定要做個(gè)自適應(yīng)的按鈕組了,要不然弄出來(lái)也沒(méi)用。2016-08-08
Android實(shí)現(xiàn)類(lèi)似360,QQ管家那樣的懸浮窗
用到的就是WindowManager以及WindowManager.LayoutParams,對(duì)這個(gè)LayoutParams做文章,當(dāng)設(shè)置為屬性后,然后,創(chuàng)建一個(gè)View,將這個(gè)View添加到WindowManager中就行2013-06-06
Android利用Senser實(shí)現(xiàn)不同的傳感器
這篇文章主要為大家詳細(xì)介紹了Android利用Senser實(shí)現(xiàn)不同傳感器的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02
Android UI實(shí)現(xiàn)單行文本水平觸摸滑動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了Android UI實(shí)現(xiàn)單行文本水平觸摸滑動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10

