0

我有一个从网站下载信息的课程。我目前正在使用 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();
}
4

1 回答 1

2

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

task = new AsyncTask<...>() {
   ...
   public void myPublish(Progress... values) {
       publishProgress(values);
   } 
};

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

于 2013-01-05T12:30:40.997 回答