我的 UI 仅在 4.0.* 中通过使用子句被阻止:“Runtime.getRuntime().exec("cat proc/meminfo");”。 下面的代码有问题吗? 提前致谢。
日志:
03-27 13:37:18.545: I/MyActivity(19730): ini().429: 1332826638549
03-27 13:37:18.545: I/MyActivity(19730): ini().434: 1332826638549
03-27 13:37:18.865: D/dalvikvm(19611): GC_CONCURRENT freed 389K, 6% free 9733K/10311K, paused 1ms+2ms
代码:
Log.i(getClass().getName(), "ini().434: " + System.currentTimeMillis());
try {
Process process = Runtime.getRuntime().exec("cat proc/meminfo");//! hang here
Log.i(getClass().getName(), "ini().436: " + System.currentTimeMillis());
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
Log.i(getClass().getName(), "ini().438: " + System.currentTimeMillis());
String str = bufferedReader.readLine();
totleMemory = Long.parseLong(str.replaceAll("\\s+", "").replaceAll("[a-zA-Z]", "").replaceAll(":", ""));
Log.i(getClass().getName(), "ini().441: " + System.currentTimeMillis());
totleMemory *= 1024;
} catch (Exception e) {
}
Log.i(getClass().getName(), "ini().446: " + System.currentTimeMillis());
最佳答案
仍然谢谢你,@Jared Burrows。 我读了一些文章,如“[When Runtime.exec() won't Navigate...][1]”,并出于相同目的将其替换为以下代码:
//Process process = Runtime.getRuntime().exec("/system/bin/cat /proc/meminfo");
FileReader fr = new FileReader("cat /proc/meminfo");
BufferedReader reader = new BufferedReader(fr);
...more
我认为在 UI 线程中调用此方法时存在一些潜在问题。stackoverflow 中的更多类似线程已发布在此处:
关于android - 为什么 Android 4.0/4.0.3 中运行时被阻止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9886559/