Android 存儲路徑選擇方法
Android能用來存儲的地方有兩個,一個是手機內置的存儲空間,一個是外置的SD卡,內置的存儲空間一般比較小,所以應用的緩存建議存儲在外置的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()); }
以上對應的輸出結果為
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
應用的緩存建議存儲在通過getExternalCacheDir().getPath()獲取的路徑中,這里的zhuwentao.com.pathdemo會根據(jù)你的應用程序包名不同會有差別,存在這個路徑,主要有以下幾個好處
一:該路徑是在SD卡中,所以不用擔心手機內置存儲空間不足,只要SD卡夠大就行。
二:該路徑是Android系統(tǒng)默認的應用緩存路徑,對應手機應用設置里面應用詳情的“清除緩存”和“清除數(shù)據(jù)”按鈕。
三:當我們卸載應用時,該路徑下的數(shù)據(jù)也會被清空,這樣就避免了有些應用卸載后還有殘留數(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卡下的路徑,沒有則獲取應用程序緩存路徑。
有時候getExternalStorageDirectory()怎么也獲取不到外置SD卡,這是為何呢?
在Android4.0之前Environment.getExternalStorageDirectory()獲取到的是外置SD卡路徑,而在4.0之后由于很多手機的自帶內存已經(jīng)很大了,不需要外置SD卡,所以Android就把內置的內存分一部分出來當作SD卡使用了,導致不同版本的Android系統(tǒng)獲取到的SD卡路徑會存在差異。
需要注意的是,各個手機廠商的SD卡路徑也是會存在差異的,有些手機獲取到的路徑是“/mnt/sdcard/…”,而有的獲取的是“/storage/sdcard0/…”所以絕對不能寫死SD卡的路徑。
以上這篇Android 存儲路徑選擇方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Android 中使用 ViewPager實現(xiàn)屏幕頁面切換和頁面輪播效果
ViewPager是谷歌官方給我們提供的一個兼容低版本安卓設備的軟件包,里面包囊了只有在安卓3.0以上可以使用的api。下面我們就展示下ViewPager可以實現(xiàn)的兩種簡單效果,感興趣的朋友一起看看吧2016-12-12Android開發(fā)之Activity管理工具類完整示例
這篇文章主要介紹了Android開發(fā)之Activity管理工具類,集合完整實例形式分析了Android操作Activity創(chuàng)建、添加、獲取、移除等相關操作技巧,需要的朋友可以參考下2018-01-01Android修改源碼解決Alertdialog觸摸對話框邊緣消失的問題
在開發(fā)的時候遇到一個問題,就是一觸摸對話框邊緣外部,對話框會自動消失。這個問題很糾結啊,查找了一下發(fā)現(xiàn)從Android 4.0開始,AlertDialog有了變化,就是在觸摸對話框邊緣外部,對話框會自動消失,查了源碼,找到解決辦法如下2013-11-11Android app開發(fā)中Retrofit框架的初步上手使用
這篇文章主要介紹了Android app開發(fā)中Retrofit框架的初步上手使用,Retrofit 2.0發(fā)布以來獲得了巨大的人氣增長,并且經(jīng)常被開發(fā)者們拿來與Volley比較,需要的朋友可以參考下2016-02-02Android Broadcast原理分析之registerReceiver詳解
這篇文章主要介紹了Android Broadcast原理分析之registerReceiver詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下2021-08-08