Java AsyncTask:如何使用onProgressUpdate与另一个类通信
我已经设置了一个Java AsyncTask:如何使用onProgressUpdate与另一个类通信,java,android,android-asynctask,Java,Android,Android Asynctask,我已经设置了一个异步任务 在doInBackground()中,唯一的任务是从另一个类调用方法。该方法是从一个旧的Java小程序复制而来的,因此在执行时,它将每隔10%将进度直接打印到屏幕上,直到完成。因为这在Android中是不可取的,所以我使用AsyncTask来运行它 我的问题是,如何在doInBackground()中捕获从该方法吐出的整数progressPercent,并传递到onProgressUpdate()以更新UI?我应该如何修改原始方法来处理AsyncTask结构?我认为您需
异步任务
在doInBackground()
中,唯一的任务是从另一个类调用方法。该方法是从一个旧的Java小程序复制而来的,因此在执行时,它将每隔10%将进度直接打印到屏幕上,直到完成。因为这在Android中是不可取的,所以我使用AsyncTask
来运行它
我的问题是,如何在
doInBackground()
中捕获从该方法吐出的整数progressPercent,并传递到onProgressUpdate()
以更新UI?我应该如何修改原始方法来处理AsyncTask
结构?我认为您需要一个方法来解决这个问题,因为doInBackground()
将只调用一次,因此您无法显示使用该方法的进度。例如,您可以每隔10%甚至更频繁地使用处理程序更新进度条 首先,表单上应该有AsyncTask
类
class Task extends AsyncTask<Object, Long, Object>
// or
class Task extends AsyncTask<Object, Integer, Object>
最后,您的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
}
顺便说一句:您可以使用循环多次显示进度,而不是仅显示一次
@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
}