我正在尝试从我的应用程序中的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();
}
答案 0 :(得分:3)
Logcat不会退出,因此缓冲区被阻止。
使用'logcat -d'转储日志然后退出。
希望这仍然有帮助,Yaron
答案 1 :(得分:1)
不是正面但我认为你需要传递logcat调用,如果它在String []中有args那么它就像
String[] baseCommand = {"logcat", "-v", "time", "MyTag:D", "*:S"};
然后是你的其余代码。
单字符串调用只是程序名称,而不是args。