【发布时间】:2013-12-15 20:22:43
【问题描述】:
我想每隔几分钟将数据从网络服务器解析到我的安卓设备。 我已经实现了一个 AsyncTask,它正在 OnPostExecute() 方法中更新我的 UI。
我没有找到重复 AsyncTask 的好方法。我尝试了 Handlers、Threads 和 ExecutorServices...我没能在数据更新后让 Asynctask 重复。关于这个主题有数百个线程,每个线程都有不同的结果。
在我的 Handler 尝试重新启动我的可运行对象后,我的源返回了一些 IllegalStateException。
12-15 21:15:36.909: E/AndroidRuntime(28256): java.lang.IllegalStateException: Cannot execute task: the task has already been executed (a task can be executed only once)
来源(onCreate() ...):
....
....
websitesAsyncTask = new WebsitesAsyncTask();
mHandler = new Handler();
refreshWebsitesRunnable = new Runnable() {
@Override
public void run() {
// mHandler.removeCallbacks(refreshWebsitesRunnable);
if (mThreadExecutor == null || mThreadExecutor.isShutdown()) {
mThreadExecutor = Executors.newSingleThreadExecutor();
}
// TODO Auto-generated method stub
Log.d("scheduled task",
"---Scheduled Task: Refresh Websites");
if (websitesAsyncTask.getStatus() != Status.RUNNING) {
// websitesAsyncTask.cancel(true);
websitesAsyncTask
.executeOnExecutor(mThreadExecutor);
}
mHandler.postDelayed(refreshWebsitesRunnable, 10000);
}
};
startRepeatingTask();
}
如何在不阻塞 UI 和编写脏代码的情况下重复我的任务?
【问题讨论】:
标签: java android multithreading android-asynctask