android 代碼實現應用強制裝到手機內存

android 代碼實現應用強制裝到手機內存

android:installLocation簡析

在Froyo(android 2.2,API Level:8)中引入了android:installLocation.通過設置該屬性可以使得開發者以及用戶決定程序的安裝位置.

android:installLocation隸屬于AndroidManifest.XML中的manifest節點.如下所示:

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"]>

. . .

android:installLocation可以設置為"auto"、"internalOnly"、"preferExternal"三個值中的任何一個.

auto:程序可能被安裝在外部存儲介質上(例如:SD Card),但是默認會被安裝到手機內存中.當手機內存為空時,程序將被安裝到外部存儲介質上.當程序安裝到手機上后,用戶      可以決定把程序放在外部儲介質還是內存中.

internalOnly:默認值.當設置為該值時,程序只能被安裝在內存中,如果內存為空,則程序將不能成功安裝.

preferExternal:將程序安裝在外部存儲介質上,但是系統不保證程序一定會被安裝到外部存儲介質上.當外部存儲介質不可以或空時,程序將被安裝到內存中.程序使用了for      ward-locking機制時也將被安裝到內存中,因為外部存儲不支持此機制.程序安裝后,用戶可以自由切換程序應該在外部還是內部存儲介質上.

注意:當程序使用了Google Play的Copy Protection特性時,只能安裝到內存中.

當程序被安裝到外部存儲介質時,

① .apk文件將被移動到外部存儲介質上,但是程序的數據仍然會在內存中

② 保存.apk文件的容器將會使用一個隨機生成的密鑰進行加密,這樣只有安裝該程序的設置可以使用存在外部存儲介質上的數據.

警告:當外部存儲介質被卸載時,安裝在該外部存儲介質上的程序將立刻被終止掉!

向后兼容性:

聲明了android:installLocation,但android:minSdkVersion小于8時,我們使用不低于Froyo的AVD進行編譯,這樣在低于Froyo的系統中android:installLocation將被忽略,而不低于Fro  yo的系統中將使用我們指定的android:installLocation.

當我們的程序具有如下行為時我們不應該將程序安裝到外部存儲介質上

①Service

正在運行的服務將被終止,當外部存儲介質被重新加載時服務不會被重啟.

②Alarm Service

鬧鐘服務將被取消,開發者必須在外部存儲介質重新加載后重新注冊鬧鐘服務.

③Input Method Engines

輸入法將被換成系統輸入法,當外部存儲介質被重新加載后用戶可以通過系統設置來啟動我們的輸入法

④Live Wallpapers

我們的動態壁紙將被替換為默認的動態壁紙.外部存儲介質重載后,用戶可以更換回來.

⑤Live Folders

我們的動態文件夾將被移出.

⑥App Widgets

我們的小部件將被移出,通常只有系統重啟后我們的小部件才可用.

⑦Account Managers

使用AccountManager創建的賬戶將會消失,直至存儲介質被重新加載.

⑧Sync Adapters

只有外部存儲介質被重新加載時,我們的同步功能才可用

⑨Device Administrators

我們的DeviceAdminReceiver將會失效

⑩監聽開機結束事件

系統會在加載外部存儲介質之前發送ACTION_BOOT_COMPLETED廣播.因此安裝在外部存儲介質的程序將不能接受開機廣播.

通常,只要我們沒有使用上述的特性,我們就可以將我們的程序安裝到外部存儲介質上.例如,大的游戲程序.當我們的APK文件有幾M大時我們應該認真的考慮是否要將程序移動到外部存儲介質上以幫助用戶節省內存.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,242評論 25 708
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,915評論 18 139
  • 安裝方法: Ctrl(Mac下Cmd)+Shift+P install package -> Boxy Theme...
    noyanse閱讀 1,066評論 0 0
  • 度過了一個愉快而又短暫的周末。洗洗刷刷,在家里稍微一忙活,又是一上午就過去了,哎!穿著舒適的家居服。我把自己埋在沙...
    心安是福鈴兒響叮當閱讀 290評論 0 0
  • 今天是新年第一天,先祝大家在新的一年心想事成、萬事如意。前幾天就開始邀請高中同學來我家做客,今天基本上聚齊了。我這...
    王顥閱讀 194評論 0 0