繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM