溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Android 存儲路徑選擇方法

發(fā)布時間:2020-09-10 17:02:17 來源:腳本之家 閱讀:166 作者:ZHU_文濤 欄目:移動開發(fā)

Android能用來存儲的地方有兩個,一個是手機內(nèi)置的存儲空間,一個是外置的SD卡,內(nèi)置的存儲空間一般比較小,所以應(yīng)用的緩存建議存儲在外置的SD卡中。

在Android系統(tǒng)中如何獲得存儲的路徑呢?

 public static void getRootPath(Context context) {
  Log.d("ExternalDirectory->", Environment.getExternalStorageDirectory().getPath());

  Log.d("ExternalCacheDir->", context.getExternalCacheDir().getPath());

  Log.d("CacheDir->", context.getCacheDir().getPath());

  Log.d("FilesDir->", context.getFilesDir().getPath());
 }

以上對應(yīng)的輸出結(jié)果為

ExternalDirectory->: /storage/emulated/0 
ExternalCacheDir->: /storage/emulated/0/Android/data/zhuwentao.com.pathdemo/cache 
CacheDir->: /data/data/zhuwentao.com.pathdemo/cache 
FilesDir->: /data/data/zhuwentao.com.pathdemo/files

應(yīng)用的緩存建議存儲在通過getExternalCacheDir().getPath()獲取的路徑中,這里的zhuwentao.com.pathdemo會根據(jù)你的應(yīng)用程序包名不同會有差別,存在這個路徑,主要有以下幾個好處

一:該路徑是在SD卡中,所以不用擔(dān)心手機內(nèi)置存儲空間不足,只要SD卡夠大就行。

二:該路徑是Android系統(tǒng)默認的應(yīng)用緩存路徑,對應(yīng)手機應(yīng)用設(shè)置里面應(yīng)用詳情的“清除緩存”和“清除數(shù)據(jù)”按鈕。

三:當(dāng)我們卸載應(yīng)用時,該路徑下的數(shù)據(jù)也會被清空,這樣就避免了有些應(yīng)用卸載后還有殘留數(shù)據(jù)的問題。

如果需要保存用戶下載的數(shù)據(jù),就不建議存儲在getExternalCacheDir()中了,可以在Environment.getExternalStorageDirectory()下新建一個文件夾,用來存儲用戶下載的數(shù)據(jù)。

我們在選擇存儲路徑的時候,還要考慮到用戶的手機是否有SD卡,再進行選擇,通過以下代碼判斷用戶是否有SD卡:

 /**
  * 獲取手機可存儲路徑
  * @param context 上下文
  * @return 手機可存儲路徑
  */
 public static String getRootPath(Context context) {
  // 是否有SD卡
  if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)
    || !Environment.isExternalStorageRemovable()) {
   return context.getExternalCacheDir().getPath(); // 有
  } else {
   return context.getCacheDir().getPath(); // 無
  }
 }

如果有SD卡或者SD卡不可被移除的時候則獲取SD卡下的路徑,沒有則獲取應(yīng)用程序緩存路徑。

有時候getExternalStorageDirectory()怎么也獲取不到外置SD卡,這是為何呢?

在Android4.0之前Environment.getExternalStorageDirectory()獲取到的是外置SD卡路徑,而在4.0之后由于很多手機的自帶內(nèi)存已經(jīng)很大了,不需要外置SD卡,所以Android就把內(nèi)置的內(nèi)存分一部分出來當(dāng)作SD卡使用了,導(dǎo)致不同版本的Android系統(tǒng)獲取到的SD卡路徑會存在差異。

需要注意的是,各個手機廠商的SD卡路徑也是會存在差異的,有些手機獲取到的路徑是“/mnt/sdcard/…”,而有的獲取的是“/storage/sdcard0/…”所以絕對不能寫死SD卡的路徑。

以上這篇Android 存儲路徑選擇方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI