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