我正在编写一个程序,在试用期间收集一系列角度输入,并将这些输入保存到具有相应时间戳的文件中。
例如:
1秒260度
2秒45度
3秒60度
等
运行试用版时,如果需要,用户应该能够暂停并重新启动或完全中止试用。
我在暂停功能方面遇到了麻烦。我一直在使用Java Timer和TimerTask类来为输入计时,因为它提供了我正在寻找的许多功能(在延迟后启动任务,仅以特定间隔记录数据等)。
在我的timerTask中,我一直将收集的角度和时间存储在并行数组中,然后在试验结束时将这些数组写入文件。
但是,当我通过timer.cancel()函数“暂停”我的timerTask并重新启动它时,旧的数据数组将被丢弃。我试图通过保存“暂停”数组,然后在重新启动的试验结束时将其与“重新启动”数组合并来避开此问题,但这并不能解释试验可能多次暂停的事实。
timer / timerTask类是否用于此作业的错误类?有没有更好的方法在Java中收集基于时间的数据?或者我只是忽略了解决方案?
答案 0 :(得分:0)
由于API指定了Timer.cancel()
终止此计时器,丢弃当前计划的任务。
实现所需功能的最简单方法可能是存储'暂停'布尔值,并在用户暂停/取消暂停时切换它。然后检查任务中布尔值的状态,如果暂停审判,则只需return;
。计时器仍会每秒触发一次,但只要暂停试用就不会发生任何事情。