android - 为什么 Android 4.0/4.0.3 中运行时被阻止?

标签 android memory runtime

我的 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 中的更多类似线程已发布在此处:

Problem with Runtime.exec and Android

关于android - 为什么 Android 4.0/4.0.3 中运行时被阻止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9886559/

相关文章:

android - 使用 Robolectric 测试自定义 View

c# - Dictionary<TKey,TValue>.Values - 它是否分配新的内存和时间复杂度

linux - 统计合理地测量程序运行时间

java - 在Java中使用cmd复制文件的问题

perl - 如果运行时与编译时相比相形见绌怎么办?

java - 从工具栏按回时 Viewpager 将无法工作

java - 如何使用getResources方法正确显示图片?

android - Gradle 3.3 版本构建失败

r - 如何让Shiny在 session 结束后恢复内存?

java - JVM 是否有最坏的情况实现?