Android:缓冲区被阻止,直到进程退出

时间:2010-09-10 13:10:29

标签: android java

我的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进程连续运行并且从未终止,我无法在屏幕上打印缓冲区内容。任何人都可以告诉我应该做什么,或者举例说明如何读取缓冲区并将其打印在屏幕上等待进程终止??

1 个答案:

答案 0 :(得分:0)

听起来像tcpdump进程应该在它自己的线程中。

你应该看一下java中的多线程 - 这样主线程可以按照正常情况继续运行,另外一个线程可以处理tcpdump并用状态更新主线程。

http://www.devarticles.com/c/a/Java/Multithreading-in-Java/