Java Android中定时任务的快速调度和取消

Java Android中定时任务的快速调度和取消,java,android,Java,Android,我正在用一个远程设备做一些IO,它可以非常快地向我发送更新(比如每秒60次)。我通过InputStream对象获取数据。在InputStream.read()阻塞的不太可能的情况下,我需要检测它来修复阻塞(尝试重置连接等)。每次发出read()调用时,我都需要一个并行超时,在调用方法之前等待一定的时间 在Android/Java中,似乎有很多方法可以执行定时任务。计时器、线程、执行器等。考虑到计划任务分配和取消的速度,最有效的方法是什么?处理程序也专门用于计划延迟的任务。您可以使用以下工具轻松安

我正在用一个远程设备做一些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)


删除队列中当前存在的所有回调或消息。您还可以指定要从队列中删除的可运行项

谢谢你的回答。你对这与我列出的其他一些方法相比有什么意见吗?一个线程运行循环器的处理程序似乎有点“赤裸裸”(这很好,因为与使用更抽象的执行器(可能会根据需要创建/销毁线程等)相比,这可以转化为更好的性能)