3

基本上,我有一个 Asynctask 用于下载文件。我可以从我的主 UI 活动中调用它,但如果我想从不同的活动中调用它怎么办 - 即一个活动是带有下载手册链接的主菜单,另一个活动是所有可用文档的 ListView要下载。

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

4

2 回答 2

6

我猜你的 MainActivity 中有 AsyncTask 作为内部类。您可以获取 AsyncTask 的代码并将其放入两个类都公开(或可访问)的新文件中。请记住,您不能多次执行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.
}

所有不同的文件。

于 2013-01-28T19:47:50.763 回答
0

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

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

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

于 2013-01-28T19:51:13.497 回答