我已经设置了AsyncTask
。
在doInBackground()
中,唯一的工作是从另一个类调用方法。该方法是从旧的Java Applet复制的,因此在执行时,它会将每10%的进度直接打印到屏幕上直到完成。由于这在Android中不可取,我使用AsyncTask
来运行它。
我的问题是,如何从doInBackground()
中的该方法捕获Integer progressPercent吐出,并传递到onProgressUpdate()
以更新UI?我应该如何修改原始方法以应对AsyncTask
结构?
答案 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:您可以使用循环多次显示进度,而不只是一次。