java - Android 中循环异步任务 - 有什么好方法?

标签 java android multithreading android-asynctask

我想每隔几分钟将数据从网络服务器解析到我的 Android 设备。 我已经实现了一个 AsyncTask,它正在 OnPostExecute() 方法中更新我的 UI。

我没有找到重复 AsyncTask 的好方法。我尝试了处理程序、线程和 ExecutorServices...我没有设法在数据更新后重复异步任务。关于这个主题有数百个主题,每个主题都有不同的结果。

在我的处理程序尝试重新启动我的可运行程序后,我的源返回一些 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 且不编写脏代码的情况下重复我的任务?

最佳答案

一个 AsyncTask 实例只能被调用一次。要进行第二次调用,您需要创建一个新实例。

关于java - Android 中循环异步任务 - 有什么好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20599333/

相关文章:

java,使用 GUI 连接到另一台计算机/服务器的文件系统

android - 如何使用数据绑定(bind)将点击监听器设置为 LinearLayout

c++ - 将线程标识为 "Remote thread"

java - JavaFX 并发修改异常

java - 'facade method'(调用自己类的公共(public)方法)是否被认为是糟糕的设计?

java - 这个语法在 Kotlin 中意味着什么?

.net - 使用一种编程语言 (C#) 针对多个移动平台进行定位/开发?成本效益?

安卓 : How can i settag for the images which are in gridview?

c++ - QTcpServer 中的内存泄漏参与不同线程中的连接

java - 缓存发生错误时进行回滚操作以保持与数据库同步