安卓手机,有两个内存:机身内存、运行内存。
机身内存: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.youkuaiyun.com/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。