获取android手机总内存和可用内存的一些方法

转自:http://blog.csdn.net/ghd2000/article/details/6146360 

网上有很多方法可以获取内存的方法,我收集了一下具体如下,可以参考这位老兄的博客。

第一种方法:

http://blog.csdn.net/sxwyf248/archive/2010/11/02/5981251.aspx

第二种方法:

是我在一个论坛里找到的,是一个高手用java的反射机制来获取手机的内存的一些信息。

具体代码如下。

 

  1. public class GetFreeMem extends Activity {  
  2.     /** Called when the activity is first created. */  
  3.     @Override  
  4.     public void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         setContentView(R.layout.main);  
  7.         Method _readProclines = null;  
  8.         try {  
  9.             Class procClass;  
  10.             procClass = Class.forName("android.os.Process");  
  11.             Class parameterTypes[]= new Class[] {String.class, String[].classlong[].class };  
  12.             _readProclines = procClass.getMethod("readProcLines", parameterTypes);  
  13.             Object arglist[] = new Object[3];  
  14.             final String[] mMemInfoFields = new String[] {"MemTotal:",  
  15.                     "MemFree:""Buffers:""Cached:"};  
  16.             long[] mMemInfoSizes = new long[mMemInfoFields.length];  
  17.             mMemInfoSizes[0] = 30;  
  18.             mMemInfoSizes[1] = -30;  
  19.             arglist[0] = new String("/proc/meminfo");  
  20.             arglist[1] = mMemInfoFields;  
  21.             arglist[2] = mMemInfoSizes;  
  22.             if(_readProclines!=null){  
  23.                 _readProclines.invoke(null, arglist);  
  24.                 for (int i=0; i<mMemInfoSizes.length; i++) {  
  25.                     Log.d("GetFreeMem", mMemInfoFields[i]+" : "+mMemInfoSizes[i]/1024);  
  26.                 }  
  27.             }  
  28.         } catch (ClassNotFoundException e) {  
  29.             e.printStackTrace();  
  30.         } catch (SecurityException e) {  
  31.             e.printStackTrace();  
  32.         } catch (IllegalArgumentException e) {  
  33.             e.printStackTrace();  
  34.         } catch (IllegalAccessException e) {  
  35.             e.printStackTrace();  
  36.         } catch (InvocationTargetException e) {  
  37.             e.printStackTrace();  
  38.         } catch (NoSuchMethodException e) {  
  39.             e.printStackTrace();  
  40.         }  
  41.     }  
  42. }  

public class GetFreeMem extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Method _readProclines = null; try { Class procClass; procClass = Class.forName("android.os.Process"); Class parameterTypes[]= new Class[] {String.class, String[].class, long[].class }; _readProclines = procClass.getMethod("readProcLines", parameterTypes); Object arglist[] = new Object[3]; final String[] mMemInfoFields = new String[] {"MemTotal:", "MemFree:", "Buffers:", "Cached:"}; long[] mMemInfoSizes = new long[mMemInfoFields.length]; mMemInfoSizes[0] = 30; mMemInfoSizes[1] = -30; arglist[0] = new String("/proc/meminfo"); arglist[1] = mMemInfoFields; arglist[2] = mMemInfoSizes; if(_readProclines!=null){ _readProclines.invoke(null, arglist); for (int i=0; i<mMemInfoSizes.length; i++) { Log.d("GetFreeMem", mMemInfoFields[i]+" : "+mMemInfoSizes[i]/1024); } } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } } } 

 

 

效果如图:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值