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

时间:2015-08-07 12:54:06

标签: java android multithreading usb

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

使用View可以很容易地实现更新Handler,但由于USB读取执行的工作太多而且无需触摸UI线程,因此必须在不同的主题。

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

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

1 个答案:

答案 0 :(得分:4)

如果你需要对经过的时间进行更精细的控制,我建议你用循环开始一个单独的线程,并在轮询之前使用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;
        }
    };