Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java AsyncTask:如何使用onProgressUpdate与另一个类通信_Java_Android_Android Asynctask - Fatal编程技术网

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
}