【发布时间】:2013-01-28 19:42:59
【问题描述】:
基本上,我有一个用于下载文件的 Asynctask。我可以从我的主要 UI 活动中调用它,但是如果我想从不同的活动中调用它怎么办 - 即一个活动是带有下载手册链接的主菜单,另一个活动是要下载的所有可用文档的 ListView。
我必须为此创建另一个 Asynctask 吗?
【问题讨论】:
基本上,我有一个用于下载文件的 Asynctask。我可以从我的主要 UI 活动中调用它,但是如果我想从不同的活动中调用它怎么办 - 即一个活动是带有下载手册链接的主菜单,另一个活动是要下载的所有可用文档的 ListView。
我必须为此创建另一个 Asynctask 吗?
【问题讨论】:
我猜你的 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.
}
所有不同的文件。
【讨论】:
必须从 UI 线程调用异步任务,该线程通常是正在运行的活动。
听起来这些活动是通过意图启动的,并且它们显示自己的 UI,所以是的,您可以从它们运行 Asynctask。
现在唯一的规定是您需要在所有活动都可以看到的地方声明/定义异步任务(因此可以创建一个扩展异步任务 com.myapp.MyAsyncTask 的类,该类还包括活动,例如 com.myapp.MyMainMenuActivity )。
【讨论】: