1.正在运行
这个可以参考android设备的内存空间(RAM)总空间和可用空间大小的获取以及一些思考
内存已用空间 = 前台进程内存空间 + 服务进程空间
可用内存空间 = meminfo中的MemFree + memInfo中的Cached + 后台和空进程的空间 - SECONDARY_SERVER_MEM(默认是16MB)
long availMem = mMemInfoReader.getFreeSize() + mMemInfoReader.getCachedSize()
- SECONDARY_SERVER_MEM;//可用内存为空余+Cache-SECONDARY_SERVER_MEM
mLastNumBackgroundProcesses = mState.mNumBackgroundProcesses;
mLastBackgroundProcessMemory = mState.mBackgroundProcessMemory;//后台进程或者空进程
mLastAvailMemory = availMem;
long freeMem = mLastAvailMemory + mLastBackgroundProcessMemory;//前台可用进程+后台空进程
String sizeStr = Formatter.formatShortFileSize(getContext(), freeMem);
android.util.Log.i("chenpeng","shengyu");
mBackgroundProcessText.setText(getResources().getString(
R.string.service_background_processes, sizeStr));//可用进程
sizeStr = Formatter.formatShortFileSize(getContext(),
mMemInfoReader.getTotalSize() - freeMem);
android.util.Log.i("chenpeng","sizeStr="+sizeStr);
android.util.Log.i("chenpeng","sizeStr=");
mForegroundProcessText.setText(getResources().getString(
R.string.service_foreground_processes, sizeStr));//已用为总的-可用进程空间
通过MemInfoReader类获取Free Cache 和Total进程 。 T701总共进程空间为437M
SECONDARY_SERVER_MEM是通过读取JB\build\target\board\generic_x86\init.rc文件获得的,默认是16MB
2.内部存储空间
已下载和全部都是显示的内部存储空间mDataFileStats = new StatFs("/data");
mDataFileStats.restat("/data");//实际上是data分区剩余空间大小
totalStorage = (long)mDataFileStats.getBlockCount() *
mDataFileStats.getBlockSize();//全部内存空间
freeStorage = (long) mDataFileStats.getAvailableBlocks() *
mDataFileStats.getBlockSize();//空闲内存
3.SD卡
mSDCardFileStats = new StatFs(Environment.getSdcardStorageDirectory().toString());
mSDCardFileStats.restat(Environment.getSdcardStorageDirectory().toString());
totalStorage = (long)mSDCardFileStats.getBlockCount() *
mSDCardFileStats.getBlockSize();
freeStorage = (long) mSDCardFileStats.getAvailableBlocks() *
mSDCardFileStats.getBlockSize();
附:
统计RAM可用内存大小
A:Android中的MemInfoReader类通过读取/proc/meminfo实现了内存大小相关的函数,但第三方程序无法调用,我们将直接将MemInfoReader.java直接拷贝到项目中,作适当修改即可使用。
B:通过MemoryInfo和ActivityManager获得可用Ram内存大小
ActivityManager am = (ActivityManager) this
.getSystemService(Context.ACTIVITY_SERVICE);
MemoryInfo mi = new MemoryInfo();
am.getMemoryInfo(mi); // mi.availMem; 当前系统的可用内存
Log.e("tag", "getMemoryInfo: " + mi.availMem);