我在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