Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.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 如何从其他类报告进度_Java_Android_Android Asynctask - Fatal编程技术网

Java 如何从其他类报告进度

Java 如何从其他类报告进度,java,android,android-asynctask,Java,Android,Android Asynctask,我有一个从网站下载信息的课程。 目前我正在使用AsyncTask来获取它,因此ui将保持响应性 我知道如何使用publishProgress和onProgessUpdate更新GUI,但是如果我在不同的类中有一个大方法(或函数),该怎么办 使用代码更容易显示: @Override protected ArrayList<Card> doInBackground(Void... voids) { Looper.prepare(); publishProgress("Cr

我有一个从网站下载信息的课程。 目前我正在使用AsyncTask来获取它,因此ui将保持响应性

我知道如何使用publishProgress和onProgessUpdate更新GUI,但是如果我在不同的类中有一个大方法(或函数),该怎么办

使用代码更容易显示:

@Override
protected ArrayList<Card> doInBackground(Void... voids)
{
    Looper.prepare();
    publishProgress("Creating object");
    SomeClass someClass = new SomeClass();
    publishProgress("Performing a long operation");
    ArrayList<Card> = someClass.getCards();//This method takes a long while. I would like to call the "publishProgress" method from the "someClass".

    return athopGetter.getCards();
}
@覆盖
受保护的ArrayList doInBackground(无效…无效)
{
Looper.prepare();
publishProgress(“创建对象”);
SomeClass SomeClass=新的SomeClass();
出版进度(“执行长期操作”);
ArrayList=someClass.getCards();//此方法需要很长时间。我想从“someClass”调用“publishProgress”方法。
返回athopGetter.getCards();
}

您可以将任务引用传递给“someClass”,因为publishProgress是受最终保护的,所以您需要实现自己的发布方法,该方法只需调用publishProgress

task = new AsyncTask<...>() {
   ...
   public void myPublish(Progress... values) {
       publishProgress(values);
   } 
};
task=newasynctask(){
...
public void myPublish(进度…值){
出版进度(价值观);
} 
};

或者您可以使用反射直接调用publishProgress。

谢谢。那正是我想要的