我們一般都會緩存一些數據在手機上,所以來說明一些有關的Android存儲的內容。
內部存儲internal storage
首先一定先明白一個概念,內存存儲 != 內存,完全是兩回事。一般當作是PC的C盤,如果使用RE管理器你可以看到這個目錄下的內容。比如在/data/data你就可以看到你的應用程序包名,因為Shared Preferences和SQLite數據庫都是存儲在這個包名下的,通過RE管理器你還可以查看建立的數據庫的內容。
內部存儲一般用Context來獲取和操作。因為內部存儲一般手機廠商劃分固定,最好不要存儲太多。
一般都會在設置中的應用程序見到清除緩存和清除數據,這兩個指的就是
Context.getCacheDir();
Context.getFilesDir();
第一個得到的目錄為:/data/data/包名/cache,機身內存不足時,文件夾下的文件會被刪除
第二個得到的目錄為:/data/data/包名/files
我在網上發現比較詳細的總結,感謝https://www.liaohuqiu.net/cn/posts/storage-in-android/
內部存儲.png
外部存儲external storage
這個存儲現在一般為手機自帶的存儲,以前指的是SD卡。
這個可以當做是PC的除C盤以外的空間,這個一般是緩存圖片等等一些存放的位置,比較流氓(BAT)的一般在目錄下直接放一個文件夾,這樣子就會造成卸載APP的時候,這些文件都不會被刪除,所以谷歌一般建議還是在你的應用程序包名下。
- 外部存儲根目錄(就是文件管理器一般打開的位置)
Environment.getExternalStorageDirectory();
- 包名下的緩存(目錄為
/storage/emulated/0/Android/data/包名/cache,前面因為手機型號不同,不一樣)
Context.getExternalCacheDir()
- 包名下的數據(這個文件夾中的媒體文件,不會被當做媒體掃描出來,加到媒體庫中。)
(目錄為/storage/emulated/0/Android/data/包名/files)
Context.getExternalFilesDir("")
參數還可以系統提供的,如Environment.DIRECTORY_PICTURES
目錄為/storage/emulated/0/Android/data/包名/files/Pictures
詳細的為
外部存儲.png