Java Android中定时任务的快速调度和取消
我正在用一个远程设备做一些IO,它可以非常快地向我发送更新(比如每秒60次)。我通过InputStream对象获取数据。在InputStream.read()阻塞的不太可能的情况下,我需要检测它来修复阻塞(尝试重置连接等)。每次发出read()调用时,我都需要一个并行超时,在调用方法之前等待一定的时间Java Android中定时任务的快速调度和取消,java,android,Java,Android,我正在用一个远程设备做一些IO,它可以非常快地向我发送更新(比如每秒60次)。我通过InputStream对象获取数据。在InputStream.read()阻塞的不太可能的情况下,我需要检测它来修复阻塞(尝试重置连接等)。每次发出read()调用时,我都需要一个并行超时,在调用方法之前等待一定的时间 在Android/Java中,似乎有很多方法可以执行定时任务。计时器、线程、执行器等。考虑到计划任务分配和取消的速度,最有效的方法是什么?处理程序也专门用于计划延迟的任务。您可以使用以下工具轻松安
在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)代码>
删除队列中当前存在的所有回调或消息。您还可以指定要从队列中删除的可运行项 谢谢你的回答。你对这与我列出的其他一些方法相比有什么意见吗?一个线程运行循环器的处理程序似乎有点“赤裸裸”(这很好,因为与使用更抽象的执行器(可能会根据需要创建/销毁线程等)相比,这可以转化为更好的性能)