我试图连续阅读 - 这意味着:
例如,如果我有一个进程,每隔几秒就写一些东西给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) 谢谢!