0

プログラムでフィルターを使用してlogcatをダンプする必要があります。adb logcat -s "TAGNAME" を適用しましたが、アプリが「ハング」しました。同様のスレッドがありますが、解決策はありません: Readfiltered log cat(Programmatically)?

        try {
            Process process = Runtime.getRuntime().exec("logcat -s XXX");
            BufferedReader bufferedReader = new BufferedReader(
                    new InputStreamReader(process.getInputStream()));

            StringBuilder log = new StringBuilder();
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                log.append(line);
                log.append(FragmentLog.LINE_SEPARATOR);
            }

            ((TextView) tv).setText(log.toString());

        } catch (IOException e) {
            ((TextView) tv).setText(R.string.default_blank);
        }
4

2 に答える 2

3

アプリを機能させるために別の方法を使用しています。誰かが知りたい場合に備えて、ここにコードがあります。

    try {               
        Process process = Runtime.getRuntime().exec("logcat -d");
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));

        String line;

        Pattern pattern = Pattern.compile("XXX", 0);

        while ((line = bufferedReader.readLine()) != null) {
            if (patternu != null
                    && !pattern.matcher(line).find()) {
                continue;
            }
            log.append(line);
            log.append('\n');
        }

    } catch (IOException e) {

    }
于 2012-02-21T01:43:53.980 に答える
2

まず、このコマンドは logcat をストリーミングし、ダンプしません。したがって、実行を停止することはありません。また、報告するコンテンツがない場合、BufferedReader はおそらく完全な行が来るのを待っているため、ブロックしています。

于 2012-02-17T05:29:08.923 に答える