Android AsyncTask 进程(logcat)不输出消息(在模拟器上)

Posted

技术标签:

【中文标题】Android AsyncTask 进程(logcat)不输出消息(在模拟器上)【英文标题】:Android AsyncTask process (logcat) does not output messages (on emulator) 【发布时间】:2012-05-18 07:38:53 【问题描述】:

logcat 进程已启动,我没有收到任何错误或强制关闭。它似乎没有产生任何输出。

    String commandLine = "logcat -v time -b main *:V";
    String line;

    try 
        process = Runtime.getRuntime().exec(commandLine);
        bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));

        while(!mStop && (line = bufferedReader.readLine()) != null && newMessages.size() < maxMessages) 
            // It does not reach this point
            // Debugger shows 
            // mStop == false
            // newMessages.size == 0
            // maxMessages == 5000
            // line == null

怀疑是 logcat 退出而没有打印任何内容。我在命令行中尝试过,它确实输出了 logcat 消息。

我用ls 替换了logcat,然后bufferedReader 填充了line

bufferedReader 的检查显示成员 in(InputStreamReader) 本身有一个成员 endOfInput,它在 readLine() 之前为 false 并变为 true紧随其后。

最新消息: 我在模拟器本身中打开了终端模拟器,然后运行它:

$ logcat -v time -b main *:V
Unable to open log device '/dev/log/main': Permission denied
$

【问题讨论】:

【参考方案1】:

在寻找类似的帖子后,这似乎是一个重复来自:

android unable to run logcat from application

简而言之,问题是:读取日志需要用户权限,所以我补充说:

<uses-permission android:name="android.permission.READ_LOGS" />

到清单,现在可以正常工作了。

【讨论】:

以上是关于Android AsyncTask 进程(logcat)不输出消息(在模拟器上)的主要内容,如果未能解决你的问题,请参考以下文章

Android AsyncTask 进程(logcat)不输出消息(在模拟器上)

AsyncTask2

AsyncTask 如何将一个进程工作到另一个进程?

调查android logcat进程退出原因

Android -- 关闭AsyncTask(异步任务)

android中 如果要你来设计AsyncTask,你怎么设计