一个Asynctask用于多个活动?

时间:2013-01-28 19:42:59

标签: android android-asynctask

基本上,我有一个用于下载文件的Asynctask。我可以从我的主要UI活动中调用它,但如果我想从另一个Activity调用它,那该怎么办?一个活动是一个主菜单,其中包含下载手册的链接,另一个活动是要下载的所有可用文档的ListView。

我是否必须为此创建另一个Asynctask?

2 个答案:

答案 0 :(得分:6)

我猜你在MainActivity中有AsyncTask作为内部类。您可以获取AsyncTask的代码并将其放在一个新文件中,该文件对两个类都是公共的(或可访问的)。请记住,您cann't execute多次使用AsyncTask实例,但您可以创建AsyncTask的多个实例。

class MainActivity{
new MyTask().execute();
}

class DifferentActivity {
  new MyTask().execute();//a new instance
}

class MyTask extends AsyncTask{
   public MyTask(Context context){
   }//Pass in context.
}

所有不同的文件。

答案 1 :(得分:0)

必须从UI线程调用Asynctasks,这通常是正在运行的活动。

听起来这些活动是通过意图启动的,它们会显示自己的UI,所以是的,你可以从它们运行Asynctasks。

现在唯一的规定就是你需要在一个所有活动都可以看到的地方声明/定义asynctask(所以可能会创建一个扩展异步任务com.myapp.MyAsyncTask的类,它还包括活动,例如com.myapp.MyMainMenuActivity )。