日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

应用程序安装在sd卡还是内存选择及设置

發布時間:2024/3/13 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 应用程序安装在sd卡还是内存选择及设置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊打開鏈接


主要內容是介紹如何使得自己開發的android程序安裝到外置儲存設備(如sd卡)安裝到外置儲存設備(如sd卡)的程序有哪些特別的地方兼容性哪些軟件最好安裝在內存中哪些最好安裝在外設上

?

下面一段是個人廢話,可忽略。。

Xml代碼??
  • 手機內存已經多次告急,安裝軟件提示內存不足,請清理后再安裝。。??
  • 國產的很多android軟件,像新浪微博、人人網、qq、uc瀏覽器、騰訊微博、淘寶、支付寶、搜狗輸入法、蝦米音樂、網易公開課等等數不盡的android客戶端,一個個無法移至sd卡,怒其不爭啊,你搞社交的、搞電商的、搞音樂的,霸占著rom干啥。參考下國外的優秀電子書、游戲、圖片android軟件,哪有無法移動的。。唉??
  • ?

    1、 設置android程序安裝到外置儲存設備(如sd卡)還是內存

    從android api level 8(即andrid 2.2)后,允許將應用程序安裝到外置儲存設備(如sd卡)中,通過AndroidManifest.xml文件中manifest的android:installLocation屬性設置:

    Java代碼??
  • <manifest?xmlns:android="http://schemas.android.com/apk/res/android"??
  • ??????android:installLocation="auto">??
  • 此屬性可以有preferExternalauto、internalOnly,可選。

    preferExternal表示首選安裝到外置儲存設備(如sd卡)中,如果外設空間不足,則安裝到內存中。可以將程序在外設和內存中進行移動

    auto表示由系統根據若干因素自動選擇將程序安裝在外置儲存設備還是內存中,可以將程序在外設和內存中進行移動。

    internalOnly表示強制安裝在內存中,通常用于一些含有必須安裝在內存中特性的應用程序,見4的介紹

    如果沒有此屬性表示安裝到設備(如手機)內存中,并且不可移動至外設存儲中。

    ?

    2、安裝到外置儲存設備中的程序

    若某程序被安裝到外置儲存設備中,則

    (1)當外置儲存設備(如sd卡)掛載在手機等設備上時,對應用程序的運行沒有什么影響。

    (2)apk文件保存在外設上,但是程序的所有私有數據,如數據庫、優化后的.dex文件、提取出來的本地代碼仍然保存在內存中。

    (3)應用程序會被用隨機生成的key加密后保存在外設上,只有原來安裝該程序的設備(如手機)才能進行解密。所以說安裝在外設上的程序只能被唯一的設備使用。

    (4)用戶可以通過系統設置將該程序移動到內存中。

    (5)當外設從設備上卸載時,所有安裝在外設上的應用程序被kill

    ?

    3、向后兼容性

    開頭就介紹了從android api level 8(即andrid 2.2)后,允許將應用程序安裝到外置儲存設備(如sd卡)中。

    對api 8之前編譯的程序只能安裝在內存中,就算安裝在api 8及以上的平臺上也無法在外設和內存中移動

    如果希望擁有android:installLocation屬性的程序能夠在api 8以下的平臺上運行,需要:

    (1)在AndroidManifest.xml文件中manifest元素設置android:installLocation屬性

    (2)設置android:minSdkVersion,其值可以小于8。并且確保應用程序使用的api和該級別兼容

    (3)在android api level 8編譯程序,因為低級別的無法識別android:installLocation屬性

    這樣當在api 8以下的平臺上android:installLocation屬性被忽略,程序安裝在內存中

    AndroidManifest.xml

    ?

    4、哪些軟件最好安裝在內存中

    當外設從設備上卸載時,所有安裝在外設上的應用程序被kill,并且直到外設可用時,系統才能識別該應用程序。除了kill程序外,對于某些程序可能會產生更嚴重的后果,為了讓你的程序始終運行在可預料情況下,當程序包含以下特性時,最好安裝在內存中:

    (1)Services(服務)

    在外設卸載時,運行的服務會被kill,并且當外設可用時不會重新啟動,除非注冊ACTION_EXTERNAL_APPLICATIONS_AVAILABLE廣播intent,這樣可以在外設可用時重啟服務

    (2)Alarm Services(定時服務)

    在AlarmManager注冊的Alarm會被取消,必須在設備可用時手動重啟

    (3)Input Method Engines(輸入法)

    在外設卸載時,安裝在外設上的輸入法不可用,系統會采用默認的IME。當外設可用時,系統必須重新啟動該輸入法

    好吧,怪不得找不到一個可以安裝到sd卡的輸入法了。。

    (4)Live Wallpapers(壁紙)

    在外設卸載時,安裝在外設上的Live Wallpapers不可用,系統會采用默認的Live Wallpapers

    (5)Live Folders(home的文件夾)

    在外設卸載時,安裝在外設上的Live?Folders不可用,系統會采用默認的Live?Folders

    好吧,怪不得htc默認的壁紙和工具不可移動了

    (6)App Widgets(應用的Widgets)

    在外設卸載時,安裝在外設上的App Widgets不可用。通常直到系統重啟方可用(或系統設置home應用程序)

    (7)Account Managers

    AccountManager創建的Account不可用直到外設可用

    (8)Sync Adapters

    AbstractThreadedSyncAdapter和所有其同步函數不可用直到外設可用

    (9)Device Administrators

    DeviceAdminReceiver和它所有的管理功能不可用

    (10)Broadcast Receivers listening for "boot completed"

    系統在外設掛載前,發出ACTION_BOOT_COMPLETED(系統啟動完畢)廣播,所以安裝在外設上的程序收不到該廣播

    (11)Copy Protection

    如果使用了Android Market's Copy Protection屬性,則不可以安裝在外設上。如果使用?Android Market's?Application Licensing,則可以任意安裝在外設還是內存內

    ?

    5、哪些軟件最好安裝在外設中

    畢竟內存有限,所以如果不包含4中所介紹屬性最好安裝在外設中。通常像apk文件較大的程序,游戲程序。

    ?

    參考:

    http://developer.android.com/guide/appendix/install-location.html

    http://www.cnblogs.com/wisekingokok/archive/2011/08/26/2154505.html



    總結

    以上是生活随笔為你收集整理的应用程序安装在sd卡还是内存选择及设置的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。