2010-09-25 28 views
3

我有這個代碼爲Android被困在synchronized語句。即使我刪除process1.wait()我趕上exception.any幫助表示讚賞?Android:java.lang.IllegalMonitorStateException:對象未被線程鎖定之前等待()

private class LongOperation extends AsyncTask<String, Void, String> 
    { 

     @Override 
     protected String doInBackground(String... params) 
     { 
     try 
     { 
    Process process1 = new ProcessBuilder("sh", "/data/local/bin/tcpdump.sh").start();    
      synchronized(process1){ 
       process1.wait(); 
      } 
     } 
     catch (Exception e) 
     { 
      Log.e("Tcpdump function error", "Unable to capture the packets into the buffer"); 
     } 
     return null; 
     } 

     /* (non-Javadoc) 
     * @see android.os.AsyncTask#onPostExecute(java.lang.Object) 
     */ 
     @Override 
     protected void onPostExecute(String result) 
     { 
     try 
     { 
      StringBuffer output = new StringBuffer(); 
      File file = new File("/data/local/bin/dump.txt"); 
      BufferedReader br = new BufferedReader(new FileReader(file), 8 * 1024); 
      String line; 
      while ((line = br.readLine()) != null) 
      { 
       output.append(line + "\n"); 
      } 
      tv.setText(output); 
      setContentView(tv); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
     } 

     /* (non-Javadoc) 
     * @see android.os.AsyncTask#onProgressUpdate(Progress[]) 
     */ 
    @Override 
    protected void onProgressUpdate(Void... values) 
     { 

     } 
} 

的tcpdump.sh有這條線 的tcpdump -c 10> /data/local/bin/dump.txt

回答

3

您肯定意味着調用Process.waitFor()?wait()?

相關問題