Java Android AsyncTask:停止执行调用web服务的任务

Java Android AsyncTask:停止执行调用web服务的任务,java,android,web-services,android-asynctask,android-activity,Java,Android,Web Services,Android Asynctask,Android Activity,我在这里寻找答案,但找不到我需要的。下面是我正在处理的场景:我有一个AsyncTask,用于进行web服务调用: class getDataDetailTask extends AsyncTask<String, Void, DataDetail> { @Override protected DataDetail doInBackground(String... args) { return AppUtils.getDataDetails();

我在这里寻找答案,但找不到我需要的。下面是我正在处理的场景:我有一个AsyncTask,用于进行web服务调用:

class getDataDetailTask extends AsyncTask<String, Void, DataDetail> {
    @Override
    protected DataDetail doInBackground(String... args) {
        return AppUtils.getDataDetails();
    }

    @Override
    protected void onCancelled(OutageDetail result) {
        .... // something goes here   
    }
}
所有这些调用都是在活动中的onCreate方法中设置的,如下所示:

    getDataDetailTask dataTask = new getDataDetailTask();
    dataTask.execute();
    checkDataTask check = new checkDataTask(dataTask);
    (new Thread(check)).start();

当AsyncTask发出cancel(true)方法时,将调用onCancelled(Object)或[onCancelled()(适用于早期SDK版本)。我的问题是,在onCancelled调用中“杀死”任务应该做什么?

只需设置处理程序,在给定的时间段后取消
AsyncTask

Handler handler = new Handler();
handler.postDelayed(new Runnable()
{
  @Override
  public void run() {
      if ( check.getStatus() == AsyncTask.Status.RUNNING )
          check.cancel(true);
  }
}, 10000 );

你的web服务调用是HTTP get/post/…请求吗?@Mariostilov是HTTP get,你为什么不试试这个->@Mariostilov啊,我明白了,你建议在HTTP请求创建时控制它…谢谢,我会给它一个快照。我想我必须处理两个不同的超时值,因为我有大约10个不同的调用,其中大部分我都会我想允许30秒的时间
Handler handler = new Handler();
handler.postDelayed(new Runnable()
{
  @Override
  public void run() {
      if ( check.getStatus() == AsyncTask.Status.RUNNING )
          check.cancel(true);
  }
}, 10000 );