AsyncTask倒计时中执行耗时操作
时间: 2024-01-21 07:09:16 浏览: 74
在使用 AsyncTask 实现倒计时的过程中,如果需要执行一些耗时操作,可以在 `doInBackground()` 方法中实现。
下面是一个示例代码,其中 `doInBackground()` 方法中模拟了一个需要耗时 2 秒钟的操作:
```java
private class CountDownTask extends AsyncTask<Void, Integer, Void> {
@Override
protected Void doInBackground(Void... voids) {
int count = 10;
while (count > 0) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
count--;
publishProgress(count);
}
return null;
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
// 更新UI界面
mTextView.setText(String.valueOf(values[0]));
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
// 执行耗时操作
doSomeHeavyWork();
}
}
```
在 `doInBackground()` 方法中,使用一个 while 循环来模拟倒计时,每秒钟调用一次 `publishProgress()` 方法,更新倒计时的剩余时间。
在 `onProgressUpdate()` 方法中,更新UI界面,这个方法会在主线程中执行。
在 `onPostExecute()` 方法中,倒计时结束后执行一些耗时操作,这个方法也会在主线程中执行。
需要注意的是,耗时操作不能在 `doInBackground()` 方法中直接执行,因为这个方法会在子线程中执行,不能更新UI界面,也不能执行一些需要在主线程中执行的操作。
阅读全文