我有一个从网站下载信息的课程。 我现在正在使用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();
}
答案 0 :(得分:2)
您可以将任务引用传递给'someClass',因为publishProgress是最终保护的,您需要实现自己的发布方法,它只需调用publishProgress,
task = new AsyncTask<...>() {
...
public void myPublish(Progress... values) {
publishProgress(values);
}
};
或者您可以使用反射直接调用publishProgress。