![](/img/trans.png)
[英]Make onPreExecute and onProgressUpdate common for all Asynctask Class
[英]AsyncTask: how to communicate with another class with onProgressUpdate
我已经设置了AsyncTask
。
在doInBackground()
,唯一的工作是从另一个类调用方法。 该方法是从旧的Java Applet复制而来的,因此在执行时,它将每10%的进度直接打印到屏幕上直到完成。 由于在Android中不建议这样做,因此我使用AsyncTask
来运行它。
我的问题是,如何从doInBackground()
该方法捕获Integer progressPercent并传递给onProgressUpdate()
来更新UI? 我应该如何修改原始方法以应对AsyncTask
结构?
我认为您需要一个Handler ,因为doInBackground()
只会被调用一次,因此您无法显示进度。 例如,您可以每10%或更频繁地使用处理程序更新进度条。
首先, 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
}
顺便说一句:您可以使用循环显示进度,而不是一次。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.