【问题标题】:Android AsyncTask called "multiple" timesAndroid AsyncTask 被称为“多次”
【发布时间】:2015-04-01 15:28:57
【问题描述】:
我对 android 编程相当陌生。我有一个主要活动,通过服务处理程序(url)从数据库获取数据。我也想插入数据,但是在不同的活动上,我希望我的主要活动在每次被调用时都是最新的(onresume(),onrestart())。
我在关于 AsyncTask 的 Android API 参考中找到了这个:
该任务只能执行一次(如果尝试第二次执行将引发异常。)
这是否意味着我不能在活动恢复时调用 AsyncTask,或者我不能同时运行 AsyncTask 的多个“实例”?
【问题讨论】:
标签:
android
android-asynctask
【解决方案1】:
字面意思是,当AsyncTask 正在运行时,您无法再次启动它。
在您的MainActivity.class 中有一行:
task.execute();
如果任务已完成或未完成,并且您再次调用该方法,则将抛出exception。
并将这个方法放在onResume() 中是一个很好的做法。
唯一需要注意的是:如果你输入了onRestart(),记住,这个回调在你改变配置时有效,但是如果你创建activity,它就不会被调用。
关于lifecycle of an Activity的文档。
【解决方案2】:
这是否意味着我不能在活动恢复时调用 AsyncTask,或者我不能同时运行 AsyncTask 的多个“实例”?
这意味着你不能在同一个AsyncTask实例上调用两次execute方法,无论它是否完成。