Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android中重复执行后台线程的最佳方法?_Java_Android_Multithreading_Usb - Fatal编程技术网

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

Java 在Android中重复执行后台线程的最佳方法?,java,android,multithreading,usb,Java,Android,Multithreading,Usb,我需要不断地从USB读取数据(至少间隔50毫秒),同时更新几个视图 使用处理程序可以很容易地更新视图,但是由于USB读取执行了太多的工作,并且不需要触摸UI线程,因此必须在不同的线程上完成 我反复阅读了一些关于执行AsyncTask的问题,如果我错了,请纠正我:这似乎不是一个好方法 在Android中重复执行后台工作的最佳方法是什么?如果您需要对所用时间进行更细粒度的控制,我建议您使用循环启动一个单独的线程,并在轮询之前使用等待。当您有新的内容时,将其与处理程序一起分派到UI线程 类似这样的东西

我需要不断地从USB读取数据(至少间隔50毫秒),同时更新几个
视图

使用
处理程序
可以很容易地更新
视图
,但是由于USB读取执行了太多的工作,并且不需要触摸UI线程,因此必须在不同的线程上完成

我反复阅读了一些关于执行
AsyncTask
的问题,如果我错了,请纠正我:这似乎不是一个好方法


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

如果您需要对所用时间进行更细粒度的控制,我建议您使用循环启动一个单独的线程,并在轮询之前使用等待。当您有新的内容时,将其与处理程序一起分派到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;
        }
    };