2013-01-07 37 views
0

我需要一些幫助。 我開發了一個解析網站的應用程序。 現在一切正常(也感謝你)。但是當我想解析的網站停止運行時,我正面臨一個問題。 該應用只是崩潰...我試圖改善超時連接,並且這個工作時,網站只是緩慢。但我如何管理服務器錯誤? 我想在textview中打印一個錯誤,就像那樣。 這是我的部分代碼如何避免Jsoup和Asynctask在服務器故障時崩潰

String result = ""; 
       Document doc = null; 
       try { 
         Connection conn = Jsoup.connect(BLOG_URL).timeout(14000); 
         doc = conn.get(); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
+0

處理它在異步onPostExecute(....) –

+0

,但在我的日誌我看到,在DoInBackground –

+0

燁崩潰..你可以處理THR本身。 –

回答

2

處理服務器關閉時的崩潰,如下所示。

private class doSomethingDelayed extends AsyncTask<Void, Integer, Void> { 

    private int num_runs = 0; 

    @Override 
    protected Void doInBackground(Void... gurk) { 

     try { 
        //stuffs... 
     publishProgress(num_runs); 
    } catch (ClientProtocolException e) { 
    } catch (IOException e) { 
     serviceAvailable = true;      
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     super.onPostExecute(result); 
     if (serviceAvailable == true) { 
      serviceAvailable = false; 
      Toast.makeText(getApplicationContext(), "Service not available", Toast.LENGTH_SHORT).show(); 
      System.out.println("in onPostExecute method --"); 
     } 
    } 

    @Override 
    protected void onProgressUpdate(Integer... num_runs) { 
     try { 

     } catch (JSONException e) { 
      e.printStackTrace(); 

     } 
    } 
} 
+0

是serviceAvailable需要的,爲什麼不只是使用返回值? – triggs

+0

是否超時超時?因爲當網站太慢而服務器沒有關閉時,我仍然崩潰。 對不起,但我是Android新手。非常感謝 –

+0

@triggs - serviceAvailable只是一個布爾值。你可以返回值。 –