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

时间:2013-04-04 09:15:04

标签: java android

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

录制会话之间总是有间隔:

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

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

现在我的问题是,应该可以将记录会话之间的间隔设置为0(如下面的清单所示)。我希望,即使我设置正确的时间,Timer也不能保证每个定时任务的完美定时执行。每个Line都有一个监听器,可以注册和取消注册到该行的数据流(每个都有TimerTask)。现在可能发生的是,如果我用TimerTasks实现它,可能会发生我在注销之前注册一个监听器,然后unergistering会导致在下一个RecordingSession中没有记录数据。

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

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

1 个答案:

答案 0 :(得分:0)

最后我选择TimerTasks并安排。每当一行停止时它会通知录音会话,一旦没有任何有效行(这应该发生在同一时刻的所有行),我重新安排RecordingSession