0

私はAsyncTask個別のクラスとしていくつかのセットアップを持っています。アプリ全体でそれらを再利用します。AsyncTask同じものが複数必要になる可能性がある場所で、そのカスタムAsyncTaskクラスの 1 つのインスタンスを複数回使用することは可能でしょうか? AsyncTask特にコールバックを使用してアクティビティの開始と通信する場合、コードの冗長なセクションが気になるため、これは実際には表面的な問題です。

私はこの方法でそれをやろうとしました -

MyTask task = new MyTask(new someCallBackListener){

    @Override
    public void taskDone(boolean youDone){

    }
});

そして、私の活動ではただ電話しています

task.execute(params);

これは初めて機能するようですが、複数回実行することはできません。新しいタスクを使用するたびに、そのタスクを初期化するだけでよいのでしょうか?

4

2 に答える 2

2

asynctask は、ここの Android ドキュメント(セクション スレッド化ルール) に従って1 回だけ実行できます。

タスクは 1 回だけ実行できます (2 回目の実行を試みると、例外がスローされます)。

したがって、AsyncTask インスタンスを再利用することはできません。さらに、このSOリンクが役立ちます!

于 2013-11-11T22:59:07.873 に答える
1

同じインスタンスを 2 回使用することはできませんが、この方法でインスタンスを作成することで、コールバックの実装を再利用できると思います

new MyTask(this).execute(params);

そして、このようにアクティビティまたはフラグメントにコールバックを実装します

public class SomeActivity extends Activity implements MyTask.someCallBackListener {

    //All the Activity code

    public void taskDone(boolean youDone) {

    }
}

このようにして、煩わしいコードの冗長なセクションなしで、AsyncTask の複数のインスタンスを作成できます。

于 2015-01-21T15:37:59.707 に答える