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

标签 java android multithreading usb

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

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

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

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

最佳答案

如果您需要对流逝的时间进行更细粒度的控制,我建议您启动一个带有循环的单独线程,并使用 Thread.sleep在轮询之前等待。当您有新东西时,将它与 Handler 一起分派(dispatch)到 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;
        }
    };

关于java - 在 Android 中重复执行后台线程的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31878237/

相关文章:

multithreading - Synchronize应该在哪些线程中使用?

java - 创建 n 个数组

android - BroadcastReceiver 不接收 TIME_SET、DATE_CHANGED 操作

c - Freertos + STM32F2 - 将堆栈分配给线程后总堆大小错误

java - 有没有更优雅的方式来启动基于列表的线程?

java - 如何在现有 Activity 中画线?

java - Jsoup 解析 - Java

java - 为什么 Java 数组声明使用大括号?

java - 检测超时的 Callable 实例

android - 如何从日历中获取所有事件?