java - 实现精确的时间相关顺序执行的好方法是什么?

标签 java android

我正在编写一个监听各种传感器的应用程序。它在录音 session 中收听它们,每个 session 都包括在不同持续时间(带有偏移)收听各种线路。当录制 session 结束时,整个数据被打包到一个 RecordingSession 对象中并发送给服务器。

录制 session 之间始终存在间隔:

####### RecordingSession 1 ########                  ####### RecordingSession 2 ########
#|********* Line 1 **************|#                  #|********* Line 1 **************|#
#        |********* Line 2 ******|#  ** interval **  #         |******** Line 2 ******|#   ...
#                |**** Line 3 ***|#                  #                |**** Line 3 ***|#
###################################                  ###################################

我知道我可以使用Java的Timer,然后安排TimerTasks不同的持续时间和偏移量。三个用于 Lines 的 TimerTasks,一个用于存储 RecordingSession 并创建一个新的 TimerTasks。

现在我的问题是,应该可以将录制 session 之间的间隔设置为 0(如下列表所示)。我预计,即使我设置了正确的时间,计时器也不能保证每个定时任务的完美定时执行。每个Line都有一个监听器,用于注册和取消注册该行的数据流(每个监听器都有 TimerTask)。现在可能发生的情况是,如果我使用 TimerTasks 实现它,则可能会发生在取消注册监听器之前注册监听器的情况,然后取消注册将导致下一个 RecordingSession 中没有记录任何数据。

####### RecordingSession 1 ############### RecordingSession 2 ########
#|********* Line 1 **************|##|********* Line 1 **************|#
#         |******** Line 2 ******|##         |******** Line 2 ******|#   ...
#                |**** Line 3 ***|##                |**** Line 3 ***|#
######################################################################

有没有比(嵌套)TimerTasks 和线程更好的方法来解决这个问题?

最佳答案

最后我选择了TimerTasks和调度。每次线路停止时,它都会通知录制 session ,并且一旦不再有任何 Activity 线路(这应该在同一时刻发生在所有线路上),我就会重新安排 RecordingSession

关于java - 实现精确的时间相关顺序执行的好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15807056/

相关文章:

java - Android JUnit 中模拟方法调用的结果为 null

java - Flyway如何初始化其数据库

java - 针对 XSD 验证 csv

java - 每次我打开新类(class)时应用程序都会强制关闭

android 在同一个 Activity 中添加两个工具栏?

android - 哪些服务可用于为应用程序存储和流式传输 VR 内容?

android - Dart OAuth 1.0 - 无效签名 - 提供的签名不匹配

Java 自绑定(bind)泛型

java - 转换到按钮控件(Android): what exactly is that?

java - 如何在 Java 中将 http 响应捕获为 Json 对象