在我的uiautomator脚本中,我将发送一些临时状态。当我使用adb从命令提示符运行uiautomator时,我可以看到我的状态一次打印一个。但是,当我使用下面的代码片段运行它时,我不会一次得到它。测试结束后,我只会立刻获得整个大块状态。我需要以实时方式获取状态以进行一些解析。
在我看来,输出是一次缓冲和刷新的。我曾尝试更改BufferedReader的缓冲区大小,但仍然无法正常运行从命令提示符运行时的状态。
任何人都有任何想法?
String tempString;
Process process = Runtime.getRuntime().exec("uiautomator runtest DummyUiAutomation.jar -c com.dummy.DummyAutomation#DummyAction");
BufferedReader buffReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
while ((tempString = buffReader.readLine()) != null) {
//do some parsing
}
答案 0 :(得分:0)
您是否在阅读完流后尝试使用Process.waitFor()?
String tempString;
Process process = Runtime.getRuntime().exec("uiautomator runtest DummyUiAutomation.jar -c com.dummy.DummyAutomation#DummyAction");
BufferedReader buffReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
while ((tempString = buffReader.readLine()) != null) {
//do some parsing
}
process.waitFor();
来自docs:
如果需要,导致当前线程等待,直到进程 由此Process对象表示已终止。此方法返回 如果子进程已经终止,则立即执行。如果 子进程尚未终止,调用线程将被阻塞 直到子进程退出。