【问题标题】:Keeping track of several AsyncTasks in Android跟踪 Android 中的几个 AsyncTask
【发布时间】:2014-05-04 21:12:42
【问题描述】:

我的应用会生成一个 AsyncTask,它会进行可能很耗时的计算。所以,AsyncTask 取消隐藏进度条:

@Override
protected void onPreExecute() {
    progressBar.setProgress(0);
    progressBar.setVisibility(View.VISIBLE);
}

progressBar在构造函数中初始化。)计算完成后进度条重新隐藏:

@Override
protected void onPostExecute(String result) {
    progressBar.setVisibility(View.GONE);
    // ...
}

我想更改应用程序,以便同时运行其中几个任务(多核万岁!)。问题在于,在这种设计中,第一个 AsyncTask 隐藏了进度条,即使还有其他几个任务仍在运行。

让最后一个任务执行操作,或在我调用的所有任务都完成后执行操作的最佳方法是什么?

【问题讨论】:

  • 多么有趣的巧合,我恰好有同样的issue

标签: android android-asynctask


【解决方案1】:

我使用一个简单的计数器,在 onPreExecute 中递增,在 onPostExecute 中递减。如果计数器达到 0,则隐藏进度条。

【讨论】:

  • 只是类中的一个静态变量?如果我用不同的进度条调用任务怎么办?
  • 在我的情况下,我在操作栏中使用不确定的进度条,因此所有网络活动都由一个进度条指示。 Activity 中的一个非静态整数记录了未决任务的计数。
  • 如果您使用不同的进度条(在布局的不同部分),那么我相信您会希望独立显示和隐藏它们,并为每个进度条维护一个不同的计数器。
  • 我把计数器变成了一个类,它有 .increment().decrement() 方法,可以自动取消隐藏和隐藏进度条。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多