AsyncTask:如何使用onProgressUpdate与另一个类进行通信

时间:2015-09-12 09:31:06

标签: java android android-asynctask

我已经设置了AsyncTask

doInBackground()中,唯一的工作是从另一个类调用方法。该方法是从旧的Java Applet复制的,因此在执行时,它会将每10%的进度直接打印到屏幕上直到完成。由于这在Android中不可取,我使用AsyncTask来运行它。

我的问题是,如何从doInBackground()中的该方法捕获Integer progressPercent吐出,并传递到onProgressUpdate()以更新UI?我应该如何修改原始方法以应对AsyncTask结构?

2 个答案:

答案 0 :(得分:0)

我认为您需要Handler,因为doInBackground()只会被调用一次,因此您无法显示进度。您可以更新进度条,例如每10%甚至更频繁地使用处理程序。

答案 1 :(得分:0)

首先,AsyncTask类应位于表单

class Task extends AsyncTask<Object, Long, Object> 
// or 
class Task extends AsyncTask<Object, Integer, Object> 

然后编辑在任务内每10%打印出进度的部分

publishProgress(/*your progress here*/);

最后你的onProgressUpdate及其参数取决于你在类定义中选择的对象

@Override
protected void onProgressUpdate(Long... values) {
    long progress = values[0];
    // update UI here
}
// if you choose object Integer
@Override
protected void onProgressUpdate(Integer... values) {
    int progress = values[0];
    // update UI here
}

BTW:您可以使用循环多次显示进度,而不只是一次。