如何报告来自不同班级的进度

时间:2013-01-05 11:48:37

标签: java android android-asynctask

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

1 个答案:

答案 0 :(得分:2)

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

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

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