我想运行诸如ping(或任何其他提供连续输出的)之类的excutable,并读取其输出并将其打印在我的GUI中。
我使用以下方法来运行我的命令:
command=Runtime.getRuntime().exec("ping www.google.com");
我正在阅读输出如下:
BufferedReader in = new BufferedReader(new InputStreamReader(command.getInputStream()));
while ((line = in.readLine()) != null) {
System.out.println(line+"\n");
}
这很好用,虽然显示输出相当于使用adb -d shell执行./excutable所花费的时间。
因为我想在gui中输出(line)所以我创建一个TextView并将输出(行)附加到其中:
txtview=(TextView)findViewById(R.id.textview);
while ((line = in.readLine()) != null) {
txtview.append(line+"\n");
System.out.println(line+"\n");
}
但这会导致我的申请崩溃。 请告诉我如何解决这个问题。
答案 0 :(得分:1)
如果您的最后一段代码正在Activity
中执行,那么您可能会阻止UI线程太长时间。这将导致Android强制关闭您的应用程序。尝试使用AsyncTask
获取输出并更新GUI。