Android中App安裝位置詳解
Android應(yīng)用可以安裝在本機(jī)自帶存儲,同時(shí)也可以安裝到外部存儲(SD卡)。自從API 8后也就是Android2.2后,我們能使APK安裝到外部存儲上。這是一個(gè)可選的特性,在工程的manifest文件中可以進(jìn)行配置:
- <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="preferEx
如上,如果聲明為preferExternal,則指定APK安裝到外部存儲上,但是系統(tǒng)不保證一定能安裝到外部存儲上,所以叫 preferExternal,例如當(dāng)外部存儲空間已經(jīng)滿了,這時(shí)系統(tǒng)會將應(yīng)用程序安裝到內(nèi)部存儲上。用戶能夠在內(nèi)部存儲與外部存儲之間移動(dòng)應(yīng)用程序。還 有一種聲明選擇,那就是“auto”,如果將屬性值聲明為這個(gè),安裝位置將由系統(tǒng)去決定。
想要將應(yīng)用程序安裝到外部存儲上,需要保證以下條件都滿足:
1.在manifest文件中指定android:installLocation屬性值為“preferExternal”或“auto";
2.確保當(dāng)前系統(tǒng)API級別為8或以上,android:minSdkVersion值必須是8以上(Android 2.2);
需要特別注意的是,用戶連接手機(jī)到PC并開啟大容量存儲模式時(shí),也就是讀取外部存儲卡內(nèi)容時(shí),所有安裝到外部存儲的應(yīng)用程序?qū)幌到y(tǒng)全部殺掉!
如果你的應(yīng)用中存在在以下情況下,應(yīng)用程序不推薦安裝到外部存儲上:
1.應(yīng)用程序中有運(yùn)行后臺Service
2.注冊了通知服務(wù)例如AlarmManager
3.第三方輸入法,如果將第三方輸入法安裝到外部存儲上,如果當(dāng)前外部存儲被掛起,則第三方輸入法會失效并切回系統(tǒng)輸入法
4.墻紙主題應(yīng)用,外部存儲被掛起時(shí),會切換為系統(tǒng)默認(rèn)墻紙或主題
5.App桌面組件工具,外部存儲被掛起是,會將Widgets從桌面移除
6.注冊了開機(jī)廣播的應(yīng)用,因?yàn)橄到y(tǒng)是先發(fā)出開機(jī)廣播然后再加載外部存儲設(shè)備的,這里有個(gè)順序問題