2014-10-10 40 views
3

在设备上,当我们在Manage apps - >running tab然后在底部我们看到使用内存&实时更改其值。如何获得当前可用的内存在Android设备可用

我们如何将它编码到我的应用程序来显示相同​​的统计数据?

谢谢

+1

相关:http://stackoverflow.com/questions/3170691/how-to-get-current-memory-usage-in-android – shyam 2014-10-10 09:10:10

回答

11

ActivityManager.MemoryInfo

MemoryInfo mi = new MemoryInfo(); 
ActivityManager activityManager = (ActivityManager)getActivity(). getSystemService(Context.ACTIVITY_SERVICE); 
activityManager.getMemoryInfo(mi); 
long availableMegs = mi.availMem/1048576L; 

long percentAvail = mi.availMem/mi.totalMem; 
+0

percentAvail始终为0以上,使用,可能应该是:'float percentAvail = Math.round(100.0 *(double)mi.availMem /(double)mi.totalMem);' – 2017-05-30 17:26:48

1

您可以使用此方法。

private float readUsage() { 
    try { 
     RandomAccessFile reader = new RandomAccessFile("/proc/stat", "r"); 
     String load = reader.readLine(); 

     String[] toks = load.split(" "); 

     long idle1 = Long.parseLong(toks[4]); 
     long cpu1 = Long.parseLong(toks[2]) + Long.parseLong(toks[3]) + Long.parseLong(toks[5]) 
       + Long.parseLong(toks[6]) + Long.parseLong(toks[7]) + Long.parseLong(toks[8]); 

     try { 
      Thread.sleep(360); 
     } catch (Exception e) {} 

     reader.seek(0); 
     load = reader.readLine(); 
     reader.close(); 

     toks = load.split(" "); 

     long idle2 = Long.parseLong(toks[4]); 
     long cpu2 = Long.parseLong(toks[2]) + Long.parseLong(toks[3]) + Long.parseLong(toks[5]) 
      + Long.parseLong(toks[6]) + Long.parseLong(toks[7]) + Long.parseLong(toks[8]); 

     return (float)(cpu2 - cpu1)/((cpu2 + idle2) - (cpu1 + idle1)); 

    } catch (IOException ex) { 
     ex.printStackTrace(); 
    } 

    return 0; 
} 
相关问题