在Android应用中连续阅读logcat

时间:2016-01-28 09:20:22

标签: android android-service logcat

我试图连续阅读 - 这意味着:

例如,如果我有一个进程,每隔几秒就写一些东西给logcat,我希望我的应用程序监听这个logcat,一旦添加了新行 - 它将捕获它并在屏幕上显示

我有一个活动,每秒都写一个计数器到日志:

Runnable r = new Runnable() {

    @Override
    public void run() {
        i++;
        Log.d("bbb", "i= " + i);
        mHandler.postDelayed(this, 1000);               
    }
}; 

我有一项服务试图"听" on" logcat -s bbb",但是一旦监听器启动 - 应用程序卡住(看起来应用程序进入无限循环),几秒钟后我收到一条消息,说明应用程序必须关闭。

聆听者代码是:(消息"开始读取行"打印出来' s

public static void Parse()
{
    Runtime rt = Runtime.getRuntime();
    Process process = null;
    try {
        process = rt.exec("su");
        DataOutputStream os = new DataOutputStream(process.getOutputStream());  
        os.writeBytes("logcat -s bbb");
        os.flush();
    } catch (IOException e1) {
        e1.printStackTrace();
    }

    BufferedReader bufferedReader = 
            new BufferedReader(new InputStreamReader(process.getInputStream()));

    String line;
    try {
        Log.d("aaa","start read line");
        while ((line = bufferedReader.readLine()) != null)
        {
            Log.d("aaa", "line = " + line);
        }
        Log.d("aaa", "finish");
    } catch (IOException e) {
        e.printStackTrace();
    }
}

服务调用函数Parse()一次。

有人知道出了什么问题吗?

***编辑:我发现了问题 - 命令" logcat -s bbb"应该从rt执行(process = rt.exec(" logcat -s bbb")),我们不需要DataOutputStream) 谢谢!

0 个答案:

没有答案