2012-09-24 78 views
2

我從AsyncTask調用webservice。它工作正常,但我試圖在關閉手機的移動網絡時進行測試。這是爲了複製沒有信號的用戶。Android如何處理來自AsyncTask內部的網絡異常

這是代碼。

@Override 
     protected Void doInBackground(String... params) { 

      try { 
       Log.e(TAG, "inside doInBackground"); 


       rotaArray = nfcscannerapplication.loginWebservice.getRota(params[0], params[1]); 


      } catch (Exception e) { 

       Log.e(TAG, "there's a problem"); 

       e.printStackTrace(); 


      } 
      return null; 

     } 

雖然引發了java.net.ConnectionException,但log語句從不會註銷到logcat enev。我如何處理可能沒有網絡信號,並優雅地退出應用程序,或者甚至更好地再次調用創建的活動?

+1

我會仔細檢查logcat的,如果它擊中了'e.printStackTrace'那麼應該有一個徹頭徹尾的「有一個問題「。另外,你能否提供更多的信息,這個問題相當模糊,謝謝。 – mrres1

回答

1

我相信你想提供一些消息或在網絡故障的情況下工作....如果是這種情況,那麼你需要檢查你的設備是否有一個活動的網絡連接....

我認爲this link將幫助... :)

0

做財產以後這樣

// this is inner to activity class 
class MyAsyncTask extends AsyncTask { 
... 
    @Override 
    protected Void doInBackground(String... params) { 

     try { 
      Log.e(TAG, "inside doInBackground"); 
      rotaArray = nfcscannerapplication.loginWebservice.getRota(params[0], params[1]); 

     } catch (IOException e) { 
      HandleNetworkError(e); 
      e.printStackTrace(); 
     } 
     return null; 

    } 
} 
// Some where in your activity class. 
void HandleNetworkError(Exception e) { 
    // Do whatever with the exception message, eg display it in a dialog. 
    ... 
}