在 Android 中重复执行后台线程的最佳方法?

Best way to perform a background Thread repeatedly in Android?

我需要不断地从 USB 读取数据(至少 50 毫秒间隔)并同时更新多个 View

更新 View 可以通过使用 Handler 轻松实现,但由于 USB 读取执行太多工作并且无需触及 UI 线程,它必须在不同的线程上完成。

我已经阅读了一些关于重复执行 AsyncTask 的问题 like this 但如果我错了请纠正我:这似乎不是一个好的方法。

在Android中重复执行后台工作的最佳方法是什么?

如果您需要对经过的时间进行更细粒度的控制,我建议您启动一个带有循环的单独线程,并使用 Thread.sleep 在轮询之前等待。当你有新东西时,用 Handler 将它分派到 UI 线程。

类似这样的东西(粗略的草图,应该给你一个想法):

    new Thread() {
        private boolean stop = false;

        @Override public void run() {
            while (!stop) {
                try {
                    Thread.sleep(50);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                // poll the USB and dispatch changes to the views with a Handler
            }
        }

        public void doStop() {
            stop = true;
        }
    };