在整个Activity中使用一个AsyncTask实例

时间:2013-11-11 22:55:01

标签: android-asynctask

我将一些AsyncTask设置为单独的类。我在整个应用程序中重用它们。我想知道,在可能需要多个AsyncTask的地方,可以多次使用该自定义AsyncTask类的一个实例?这实际上是一个美化问题,因为它让我烦恼有冗余的代码段,特别是当AsyncTask使用回调来与它的启动活动进行通信时。

我试过这样做 -

MyTask task = new MyTask(new someCallBackListener){

    @Override
    public void taskDone(boolean youDone){

    }
});

然后在我的活动中调用

task.execute(params);

这似乎是第一次工作,但我不能多次执行它。每次我想使用它时,我真的只需要初始化一个新任务吗?

2 个答案:

答案 0 :(得分:2)

根据android文档here(部分线程规则),asynctask只能执行一次

  

任务只能执行一次(如果是,则会抛出异常   尝试第二次执行。)

因此无法重用AsyncTask实例。进一步this SO链接可以帮助您!

答案 1 :(得分:1)

虽然你不能使用两次相同的实例,但我认为你可以通过这种方式创建实例来重用回调实现

new MyTask(this).execute(params);

并在Activity或Fragment中实现回调,如下所示

public class SomeActivity extends Activity implements MyTask.someCallBackListener {

    //All the Activity code

    public void taskDone(boolean youDone) {

    }
}

这样,您可以创建AsyncTask的多个实例,而不会有那些困扰您的冗余代码段。