0

Web サイトから情報をダウンロードするクラスがあります。現時点では 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 は最終的に保護されているため、publishProgress を呼び出すだけの独自の publish メソッドを実装する必要があります。

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

または、リフレクションを使用して、publishProgress を直接呼び出すことができます。

于 2013-01-05T12:30:40.997 に答える