我将一些AsyncTask
设置为单独的类。我在整个应用程序中重用它们。我想知道,在可能需要多个AsyncTask
的地方,可以多次使用该自定义AsyncTask
类的一个实例?这实际上是一个美化问题,因为它让我烦恼有冗余的代码段,特别是当AsyncTask
使用回调来与它的启动活动进行通信时。
我试过这样做 -
MyTask task = new MyTask(new someCallBackListener){
@Override
public void taskDone(boolean youDone){
}
});
然后在我的活动中调用
task.execute(params);
这似乎是第一次工作,但我不能多次执行它。每次我想使用它时,我真的只需要初始化一个新任务吗?
答案 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的多个实例,而不会有那些困扰您的冗余代码段。