设置中应用程序已用 可用空间的计算方法:

来源:互联网 发布:学软件的网站 编辑:程序博客网 时间:2024/04/27 22:30

1.正在运行

这个可以参考
android设备的内存空间(RAM)总空间和可用空间大小的获取以及一些思考
内存已用空间 = 前台进程内存空间 + 服务进程空间   
可用内存空间 = meminfo中的MemFree + memInfo中的Cached + 后台和空进程的空间 - SECONDARY_SERVER_MEM(默认是16MB)

 long availMem = mMemInfoReader.getFreeSize() + mMemInfoReader.getCachedSize()                - SECONDARY_SERVER_MEM;//可用内存为空余+Cache-SECONDARY_SERVER_MEMmLastNumBackgroundProcesses = 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);




原创粉丝点击