我的android应用程序中使用以下代码阻塞缓冲区有问题:
else if (tcpdumpButton.isChecked())
{
try
{
Process process1 = Runtime.getRuntime().exec("tcpdump");
BufferedReader osRes = new BufferedReader(new InputStreamReader(process1.getInputStream()));
StringBuffer output = new StringBuffer();
String line="";
while ((line = osRes.readLine()) != null)
{
output.append(line);
output.append("\n");
tv.setText(output);
setContentView(tv);
}
}
catch (Exception e)
{
throw e;
}
}
由于tcpdump进程连续运行并且从未终止,我无法在屏幕上打印缓冲区内容。任何人都可以告诉我应该做什么,或者举例说明如何读取缓冲区并将其打印在屏幕上等待进程终止??
答案 0 :(得分:0)
听起来像tcpdump进程应该在它自己的线程中。
你应该看一下java中的多线程 - 这样主线程可以按照正常情况继续运行,另外一个线程可以处理tcpdump并用状态更新主线程。