获取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. }  

 

 

 

效果如图:

 

你可能感兴趣的:(android)