获取任何异常时取消AsyncTask

时间:2014-04-01 09:10:01

标签: java android android-asynctask

我正在尝试在doInBackground的{​​{1}}方法中发生任何异常时显示对话框。我知道在上一个任务运行时我无法显示对话框。所以为此,我试图像这样取消(完成)AsyncTask

AsyncTask

我创建了一个try { response= HttpService.doServerRequest(params); } catch(Exception e){ task.cancel(true); //Cancelling AsyncTask CustomException.onException(CurrentActivityName.this); } 类来处理所有异常并显示一个对话框,告诉我发生了一些错误。我知道这里已经提到了这类问题,但我没有得到任何解决方案,这就是我要问的原因。

有没有办法完成之前的所有活动或完成CustomException

请帮忙。

先谢谢。

2 个答案:

答案 0 :(得分:0)

从内部停止AsyncTask非常简单:

HTTPResponse response = null;
try {
    response = HttpService.doServerRequest(params);          
} catch(Exception e){         
} 

if (response == null) return null;

您只需返回null或任何其他可用于在onPostExecute()中告知任务是否成功的对象。

答案 1 :(得分:0)

1.完成之前的所有活动 你只需要调用finish方法!或者将活动设置为单身模式(实际上,我不清楚你的意思)

2.如果你想要完成AsyncTask。  你应该注意到不同Android版本中的AsyncTask具有不同的功能

  
    

低于4.0.x AsyncTask task.cancel方法无法停止AsyncTask运行,它只是设置一个标志为ture,而且没有,你应该得到标志值,并决定做什么,例如:

  
 task.cancel(true);

   if(task.iscancel()){
       CustomException.onException(CurrentActivityName.this)
      // or other stuff ,what you want !
    }
  
    

4.0.x以上它将完全正常工作!如果你调用task.cancel(true);任务将停止运行