我需要不断地从USB读取数据(至少50ms间隔)并同时更新几个View.
使用Handler可以很容易地实现更新View,但由于USB读取执行的工作太多而且不需要触摸UI Thread,因此必须在不同的线程上完成.
我已经阅读了一些关于反复执行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;
}
};
标签:java,android,multithreading,usb
来源: https://codeday.me/bug/20190623/1272908.html