我使用的AsyncTask這樣如何處理例外的AsyncTask
public class AccountReportActivity extends Activity {
private OrgaLevelTask orgaLevelTask;
public void onCreate(Bundle savedInstanceState) {
......
orgaLevelTask = new OrgaLevelTask(AccountReportActivity.this, spinner_orgaLevel, spinner_branch, txt_extra, txt_extra1);
orgaLevelTask.execute();
} //end of onCreate
} //end of class AccountReportActivity
任務:
public class OrgaLevelTask extends AsyncTask<Void, Void, ArrayList<OrgaLevel>> {
//Constrcutor
public OrgaLevelTask(AccountReportActivity accountReportActivity, Spinner spinner_orgaLevel, Spinner spinner_branch, TextView txt_extra, TextView txt_extra1) {
this.accountReportActivity = accountReportActivity;
this.spinner_orgaLevel = spinner_orgaLevel;
....
} //end of constructor
@Override
protected ArrayList<OrgaLevel> doInBackground(Void... arg0) {
return callWebService();
} //end of doInBackground()
private ArrayList<OrgaLevel> callWebService() {
try {
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
......
} catch (SocketTimeoutException e) {
Toast.makeText(accountReportActivity, "Service is not connected, Please make sure your server is running", Toast.LENGTH_LONG).show();
return null;
} catch(Exception e) {
e.printStackTrace();
System.out.println();
}
} //end of callWebService()
} //end of class OrgaLevelTask
我這個任務調用其他的AsyncTask具有相同的代碼。問題是如果服務器正在運行,那麼一切都很好。但是,如果服務器沒有運行,我打電話給網絡服務,然後我得到的異常,強制應用程序關閉。爲什麼?我正在處理SocketTimeoutException如果發生異常,那麼我說的是在我的Activity上顯示敬酒,但爲什麼它強制關閉應用程序。我該如何處理它?由於
你不應該使用使用
Toast
你確定你是擊中正確的異常,在你的情況下SocketTimeoutException?也許嘗試添加頂級類Exception並打印堆棧跟蹤來查找究竟發生了什麼異常。 – 2012-07-18 05:11:24完整的logcat輸出始終需要在Stackoverflow上提出問題。 – 2012-07-18 05:14:45