2013-09-25 33 views
1

我正在嘗試使用AsyncTask清理HTML和HtmlCleaner。這是代碼:嘗試使用HtmlCleaner清理HTML時,AsyncTask不會執行

private class cleanHtml extends AsyncTask<Void, Void, Void>{ 

    @Override 
    protected Void doInBackground(Void... arg0) { 
     try { 
      HtmlCleaner cleaner = new HtmlCleaner(); 
      String url = "https://www.easistent.com/urniki/263/razredi/16515"; 
      TagNode node = cleaner.clean(new URL(url)); 
      CleanerProperties props = cleaner.getProperties(); 
      new PrettyXmlSerializer(props).writeToFile(node, "cleaned.xml", "utf-8"); 
      Log.i("TAG", "Executing AsyncTask"); 
     } catch (MalformedURLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     return null; 
    } 
} 

我在onCreate方法執行的AsyncTask:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    new cleanHtml().execute(); 

}//End of onCreate 

然而,沒有任何反應。正如你所看到的,我把log.i放在AsyncTask裏面,看看它是否執行r,我從來沒有看到logcat裏面的log.i消息。我可能做錯了什麼?另外,在我的手機中會出現「clean.xml」的位置?由於我沒有設置任何類型的目標文件夾。

logcat的(信息):

09-25 20:23:31.739: W/System.err(19078): java.io.FileNotFoundException: /cleaned.xml: open failed: EROFS (Read-only file system) 
09-25 20:23:31.747: W/System.err(19078): at libcore.io.IoBridge.open(IoBridge.java:409) 
09-25 20:23:31.747: W/System.err(19078): at java.io.FileOutputStream.<init>(FileOutputStream.java:88) 
09-25 20:23:31.747: W/System.err(19078): at java.io.FileOutputStream.<init>(FileOutputStream.java:128) 
09-25 20:23:31.755: W/System.err(19078): at java.io.FileOutputStream.<init>(FileOutputStream.java:117) 
09-25 20:23:31.755: W/System.err(19078): at org.htmlcleaner.Serializer.writeToFile(Serializer.java:131) 
09-25 20:23:31.755: W/System.err(19078): at org.htmlcleaner.Serializer.writeToFile(Serializer.java:142) 
09-25 20:23:31.755: W/System.err(19078): at com.whizzapps.stpsurniki.ScheudeleWithDesign$cleanHtml.doInBackground(ScheudeleWithDesign.java:36) 
09-25 20:23:31.755: W/System.err(19078): at com.whizzapps.stpsurniki.ScheudeleWithDesign$cleanHtml.doInBackground(ScheudeleWithDesign.java:1) 
09-25 20:23:31.755: W/System.err(19078): at android.os.AsyncTask$2.call(AsyncTask.java:287) 
09-25 20:23:31.755: W/System.err(19078): at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
09-25 20:23:31.755: W/System.err(19078): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
09-25 20:23:31.755: W/System.err(19078): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
09-25 20:23:31.755: W/System.err(19078): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
09-25 20:23:31.755: W/System.err(19078): at java.lang.Thread.run(Thread.java:841) 
09-25 20:23:31.755: W/System.err(19078): Caused by: libcore.io.ErrnoException: open failed: EROFS (Read-only file system) 
09-25 20:23:31.755: W/System.err(19078): at libcore.io.Posix.open(Native Method) 
09-25 20:23:31.755: W/System.err(19078): at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110) 
09-25 20:23:31.763: W/System.err(19078): at libcore.io.IoBridge.open(IoBridge.java:393) 
+0

可能是因爲您正在獲取由catch-block捕獲的異常,防止您的應用崩潰。發佈您的LogCat輸出。 –

+0

@PhilippJahoda我應該發佈哪種類型的LogCat輸出?詳細/調試/信息/ ...? – Guy

+0

執行任務時獲得的人。 –

回答

0

的AsncTask被執行。但是由於例外情況,執行不會結束。

你在這個行業得到一個FileNotFoundEcxeption

new PrettyXmlSerializer(props).writeToFile(node, "cleaned.xml", "utf-8"); 

這是由你的追趕塊防止你的應用程序崩潰抓獲。

的異常可能是造成

  • 不是正確的 「cleaned.xml」 文件的路徑。
  • Typos int he filename。
+0

謝謝你的回答,但你有什麼想法如何解決這個問題嗎?該文件不應該存在,它應該在執行完成時創建。如果你在使用HtmlCleaner之前感謝它, – Guy