【问题标题】:What is the simple way to limit the execution time of an AsyncTask?限制 AsyncTask 执行时间的简单方法是什么?
【发布时间】:2018-01-21 08:11:39
【问题描述】:

我有一个 AsyncTask 调用第三方 API 并传递少量参数并获取 JSON 作为结果。但是,有时执行需要花费太多时间。假设,我只想执行这个 AsyncTask 30 秒,如果它没有在 30 秒内完成,那么中止 AsyncTask 并继续执行剩余的代码。您能否为此提供一些参考/示例?

【问题讨论】:

标签: android


【解决方案1】:

您可以设置CountDownTimer 以在AsyncTask 运行超过30 秒时停止它。

例如:

new CountDownTimer(30000, 28000) {

 public void onTick(long millisUntilFinished) {

  }

    public void onFinish() {
        asyncTask.cancel(true);  //
      }
  }.start();

另一种方式是Handler

  new Handler().postDelayed(new Runnable(){
     @Override
     public void run() {
       asyncTask.cancel(true);
      }
  },30000)

另一种简单的方法是将您的 HTTP 调用的 Connection Timeout 设置为 30 秒。它会在 30 秒后自动结束异步任务。

【讨论】:

  • 当然可以。它实际上在后台运行。不要在倒数计时器中使用 UI 组件。
  • 查看我的更新答案。如果你还需要在里面使用 UI 组件。您可以使用处理程序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-25
  • 2011-06-20
  • 2020-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多