0

我有一些AsyncTask设置为单独的课程。我在整个应用程序中重复使用它们。AsyncTask我想知道,在可能需要多个相同的地方,是否可以AsyncTask多次使用该自定义类的一个实例?这确实是一个装饰性问题,因为它让我有多余的代码部分,特别是当AsyncTask使用回调与其开始活动进行通信时。

我试过这样做-

MyTask task = new MyTask(new someCallBackListener){

    @Override
    public void taskDone(boolean youDone){

    }
});

然后在我的活动中只是打电话

task.execute(params);

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

4

2 回答 2

2

根据此处的 android 文档(线程规则部分),asynctask 只能执行一次,其中说

该任务只能执行一次(如果尝试第二次执行将引发异常。)

所以不可能重用 AsyncTask 实例。此外,此SO 链接将对您有所帮助!

于 2013-11-11T22:59:07.873 回答
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 的多个实例,而无需那些困扰您的冗余代码部分。

于 2015-01-21T15:37:59.707 回答