我需要不断地从 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/