Чтение logcat из приложения не работает правильно - PullRequest
0 голосов
/ 19 сентября 2011

Я пытаюсь прочитать из вывода logcat в моем приложении.Я могу читать правильно, но он продолжает читать это в бесконечном цикле.Почему-то, похоже, нет способа обнаружить конец потока.

Не уверен, что я делаю неправильно.

Вот мой код:

    String baseCommand = "logcat -v time MyTag:D *:S";

    Process process = null;
    try {
        process = Runtime.getRuntime().exec(baseCommand);
        InputStreamReader reader = new InputStreamReader(process.getInputStream());
        BufferedReader bufferedReader = new BufferedReader(reader);
        String line;
        while ((line = bufferedReader.readLine()) != null) {
            Log.d("SomeOtherTag", line); //This line executes endlessly
        }
    } catch (IOException e) {
        Log.e(DEBUG_TAG, "error in logging");
        e.printStackTrace();
    }

Ответы [ 2 ]

3 голосов
/ 04 мая 2013

Logcat не завершается, поэтому буфер блокируется.

Используйте 'logcat -d', чтобы сбросить журнал и затем выйти.

Надеюсь, это все еще помогает, Ярон

1 голос
/ 19 сентября 2011

Не уверен, но я считаю, что вам нужно передать вызов logcat, если он содержит аргументы в строке [], так что это будет что-то вроде

String[] baseCommand = {"logcat", "-v", "time", "MyTag:D", "*:S"};

, тогда как остальная часть вашего кода.

Однострочный вызов - это просто имя программы, а не аргументы.

...