我在android中運行一個異步任務來ping通特定的URL,但問題是當url無效或不可達時發生異常,因爲sockettimeoutexception如此異常我想停止正在運行的任務。 iagve嘗試使用取消()方法,但會導致應用程序崩潰。如何停止正在運行的異步任務?
我正在使用以下代碼。
private class UrlDataProvider3 extends AsyncTask<String, Void, String>
{
String ret="";
int checkStatus;
Boolean exception=false;
@Override
protected String doInBackground(String... url)
{
HttpURLConnection con = null;
try
{
Log.i("RAE", "urlData"+url[0]);
HttpURLConnection.setFollowRedirects(true);
con = (HttpURLConnection) new URL(url[0]).openConnection();
con.setRequestMethod("POST");
con.setConnectTimeout(20000);
}
catch (IOException e)
{
if(e.toString().contains("java.net.SocketTimeoutException:"))
{
return null;
}
}
return ret;
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
Log.i("RAE"," Asyc finished");
}
應用程序崩潰並顯示taskCancellation例外 – 2014-12-06 05:12:51
將堆棧跟蹤粘貼到此處。 – Nazgul 2014-12-06 05:17:01
12-06 10:42:06.192:E/AndroidRuntime(31001):致命例外:主 12-06 10:42:06.192:E/AndroidRuntime(31001):java.util.concurrent.CancellationException – 2014-12-06 05:22:20