朋友们在做什么,希望最好。 朋友,我想知道我的Android设备有多少内存,以及使用了多少内存 活动内存,非活动内存,可用内存和有线内存(MB) 我已经通过解析“/ system / bin / cat”,“/ proc / meminfo”来说明了这一点,我们可以得到上面提到的东西,是的,我得到了所有的东西,但我是得到一个长长的字符串,我拥有一切
MemTotal: 377192 kB
MemFree: 10448 kB
Buffers: 1368 kB``
Cached: 74276 kB
SwapCached: 0 kB
Active: 143116 kB
Inactive: 177292 kB
Active(anon): 118388 kB
Inactive(anon): 137664 kB
Active(file): 24728 kB
Inactive(file): 39628 kB
Unevictable: 10664 kB
Mlocked: 10372 kB
HighTotal: 190464 kB
HighFree: 568 kB
LowTotal: 186728 kB
LowFree: 9880 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 8 kB
Writeback: 0 kB
AnonPages: 255440 kB
Mapped: 45816 kB
Shmem: 624 kB
Slab: 10952 kB
SReclaimable: 2456 kB
SUnreclaim: 8496 kB
这是我从
得到的更大的字符串 private String ReadCPUinfo()
{
ProcessBuilder cmd;
StringBuffer strMemory = new StringBuffer();
//final ActivityManager activityManager =(ActivityManager)
context.getSystemService(Context.ACTIVITY_SERVICE);
ActivityManager actvityManager = (ActivityManager) this.getSystemService(
ACTIVITY_SERVICE );
ActivityManager.MemoryInfo mInfo = new ActivityManager.MemoryInfo ();
actvityManager.getMemoryInfo( mInfo );
strMemory.append("Available Memory : ");
strMemory.append(mInfo.availMem/1048576L);
strMemory.append("\n");
strMemory.append("\n");
String result=strMemory.toString();
try{
String[] args = {"/system/bin/cat", "/proc/meminfo"};
cmd = new ProcessBuilder(args);
Process process = cmd.start();
InputStream in = process.getInputStream();
byte[] re = new byte[1024];
while(in.read(re) != -1){
System.out.println("itthhe ==== --- >>>> "+new String(re));
result = result + new String(re);
}
in.close();
} catch(IOException ex){
ex.printStackTrace();
}
return result;
}
我想知道我是否可以为diff动态破坏这个字符串。设备还是有其他方法可以找到上面的东西
我也经历了this link,但它也不是那么使用全..我很容易得到可用的内存信息,但我需要全部四个
任何帮助都深表感谢 谢谢你的意见
答案 0 :(得分:6)
ActivityManager activityManager = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE);
MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
activityManager.getMemoryInfo(memoryInfo);
Log.i(TAG, " memoryInfo.availMem " + memoryInfo.availMem + "\n" );
Log.i(TAG, " memoryInfo.lowMemory " + memoryInfo.lowMemory + "\n" );
Log.i(TAG, " memoryInfo.threshold " + memoryInfo.threshold + "\n" );
List<RunningAppProcessInfo> runningAppProcesses = activityManager.getRunningAppProcesses();
Map<Integer, String> pidMap = new TreeMap<Integer, String>();
for (RunningAppProcessInfo runningAppProcessInfo : runningAppProcesses)
{
pidMap.put(runningAppProcessInfo.pid, runningAppProcessInfo.processName);
}
Collection<Integer> keys = pidMap.keySet();
for(int key : keys)
{
int pids[] = new int[1];
pids[0] = key;
android.os.Debug.MemoryInfo[] memoryInfoArray = activityManager.getProcessMemoryInfo(pids);
for(android.os.Debug.MemoryInfo pidMemoryInfo: memoryInfoArray)
{
Log.i(TAG, String.format("** MEMINFO in pid %d [%s] **\n",pids[0],pidMap.get(pids[0])));
Log.i(TAG, " pidMemoryInfo.getTotalPrivateDirty(): " + pidMemoryInfo.getTotalPrivateDirty() + "\n");
Log.i(TAG, " pidMemoryInfo.getTotalPss(): " + pidMemoryInfo.getTotalPss() + "\n");
Log.i(TAG, " pidMemoryInfo.getTotalSharedDirty(): " + pidMemoryInfo.getTotalSharedDirty() + "\n");
}
}
请参阅How do I discover memory usage of my application in Android?
这就是你所需要的;)