我正在使用远程设备进行一些 IO,该设备可以很快地向我发送更新(比如每秒 60 次)。我通过 InputStream 对象获取数据。万一 InputStream.read() 阻塞,我需要检测到这个来修复阻塞(尝试重置连接等)。每次我发出 read() 调用时,我都想要一个并行超时,它会在调用方法之前等待一定的时间。
似乎有很多方法可以在 Android/Java 中执行定时任务。计时器、线程、执行程序等。具体考虑到分配和取消计划任务的速度,最有效的方法是什么?
处理程序也专门用于调度延迟任务。您可以使用以下方法轻松安排任务:
private void scheduleButAlsoReschedule(final View v){
v.getHandler().removeCallbacksAndMessages(null);
v.getHandler().postDelayed(new Runnable(){
@Override
public void run() {
// do something here, Note: this is UI-thread
}}, DISMISS_DELAY);
}
v.getHandler().removeCallbacksAndMessages(null);
删除当前在队列中的所有回调或消息。您还可以指定要从队列中删除的 Runnable。