2011-09-09 153 views
6

許多與我的應用程序中下載內容的存儲位置有關的獨立但相關的問題。Android - 在哪裏存儲下載的內容,內部與外部存儲?

我有一個從中央服務器下載內容的應用程序。此內容有時是優質內容,或者至少是出版商不希望其自由分發的內容。我知道「外部」存儲容易訪問,而「內部」存儲受到保護,除非電話是根植的。

如果應用程序安裝在SD卡上(因爲我的配置是),那麼SD卡上是否也有「內部」存儲?因此,如果我的SDCARD安裝的應用程序下載了100MB內容到內部存儲器,那麼它實際上是在SDCARD上結束,還是在設備的物理板載存儲器中結束?

如果應用程序安裝在SD卡上,並且下載內容的「內部」存儲位於SD卡上,那麼它是以實際存儲的開放格式還是加密的?我似乎記得讀取存儲在SDCARD上的應用程序是加密的。這是否也適用於「內部」存儲?

(刪除有關在一個單獨的目錄爲Context.getDir()存儲文件的問題意味着一個目錄系統,可以創建和維護內部存儲)

有沒有更好的方法嗎?

回答

4

難道一堆實驗,並在摩托羅拉Droid 2來到了以下結論與Android 2.2:

  • 當安裝應用程序/移動到的SD卡,然後它被存儲爲在.asec文件SDCARD上隱藏的/.android_secure目錄。這是一個加密和壓縮文件。
  • 當應用程序在「內部存儲器」中創建數據文件時,它們存儲在設備的內部存儲器中,SD卡上的而不是
  • 應用程序的「設置/管理應用程序詳細信息」對話框具有「數據」值 - 這是應用程序在其內部存儲器中使用的數據量,即不在SDCARD上的內部存儲器中的數據量
  • 外部存儲確實會在/ Android /數據目錄下的SDACRD中結束
  • 清除設置/管理應用程序詳細信息對話框中的數據確實會擦除所有內容,這意味着已安裝的應用程序需要有足夠的知識/邏輯來處理「無數據」情況。

我的應用程序是一個下載內容的應用程序。這一切都對我意味着是:

  • 有一個在存儲我的SD卡小應用程序因爲存儲會消耗手機上的大部分將在設備的內存中幾乎沒有真正的價值。當然,它總是可以讓應用程序安裝在SDCARD上。
  • 安裝包需要能夠恢復用戶下載的內容,如果它被用戶擦除。
  • 在內部存儲器中存儲unique installation id的概念運行良好,直到用戶刪除應用程序的數據並因此導致計算新的安裝標識。因此,爲了能夠記住下載到設備的內容,需要在中央服務器上有用戶帳戶,用戶在從頭開始時創建/登錄到用戶帳戶。