安卓手機,有兩個內存:機身內存、運行內存。
機身內存:ROM //相當於給電腦添加一塊硬盤。運行內存:RAM //相當於電腦裏的內存條。容量越高,響應速度越快,操作越流暢。手機買來就是固定不變的。
ROM機身內存包含:在手機內部的持久化存儲器中。android裏的文件存儲、SP、SQLit、網絡存儲、ContentProvider五種存儲方式都是在ROM中。
①內部存儲
②系統存儲
③系統緩存
①內部存儲:
//判斷手機是否插入外置SDCard,並且應用程序具有讀寫權限。
Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState());
要使用存儲功能,還要添加權限,在manifest.xml中:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
Environment.getExternalStorageDirectory().getAbsolutePath() + File.separatorChar//獲取SDCard的局對路徑 + "/"
Environment.getDownloadCacheDirectory().getAbsolutePath() + File.separatorChar//下載緩存目錄的內容 + "/"
Environment.getDataDirectory();//獲取手機內置存儲目錄
/**android 獲取系統默認路徑:*/
Environment.getDataDirectory().getPath() : /data
Environment.getDownloadCacheDirectory().getPath() : /cache
Environment.getExternalStorageDirectory().getPath(): /mnt/sdcard
Environment.getRootDirectory().getPath() :/system
Context.getCacheDir().getPath() : /data/data/com.zhd/cache
Context.getExternalCacheDir().getPath() :/mnt/sdcard/Android/data/com.zhd/cache
Context.getFilesDir().getPath() :/data/data/com.zhd/files
Context.getObbDir().getPath() :/mnt/sdcard/Android/obb/com.zhd
Context.getPackageName() : com.zhd
Context.getPackageCodePath() :/data/app/com.zhd-1.apk
Context.getPackageResourcePath() :/data/app/com.zhd-1.apk
=========華麗分割線=========start
獲取內置、外置存儲空間目錄,以及空間大小。
http://blog.csdn.net/hudashi/article/details/7716653
不同的設備上,調用getExternalStorageDirectory()返回值卻不一樣。查詢了Android的文檔,才找到原因,
原來這個方法返回的是當前設備廠商所認爲的“外部存儲”,有可能返回外置的SD卡目錄(Micro SD Card),也可能返回內置的存儲目(eMMC)。
通過掃描系統文件遍歷"system/etc/vold.fstab”
來實現內置eMMC存儲的路徑
https://my.oschina.net/liucundong/blog/288183
涉及Android內置存儲路徑,外置存儲路徑
=========華麗分割線=========end
②系統存儲
如果不刷機,就一直存在的值。可以通過ContentProvider提供使用。
③系統緩存
見獲取cache路徑下方法。
RAM
斷電後,所有內容消失
相當於Java內存的使用,對象池,線程池,dalvik,art,堆棧緩存一類都是在RAM中。
關於一些內存的優化,就是指的RAM。