3

我正在使用它来设置时间栏:

ArrayList<AwarenessFence> awarenessFences = new ArrayList<AwarenessFence();
awarenessFences.add(TimeFence.inInterval(timeInMillis, timeInMillis+5L));
AwarenessFence customFence = AwarenessFence.and(awarenessFences);

但是,当时间落在 timeMillis 和 timeMillis+5L 之间时,不会触发栅栏。我的接收器工作正常,因为所有其他围栏都按预期工作。TimeFence 不工作背后的问题是什么?

4

1 回答 1

1

该问题没有足够的信息来确定潜在问题。通过测试,提到的特定时间范围按预期工作。我可以尽最大努力指出一些常见问题。

  • 查看TimeFence.inInterval的文档,开始和停止时间毫秒是自纪元以来的毫秒数。请检查自纪元以来传递的参数是否实际上以毫秒为单位(而不是在特定时区或自一天开始以来)

  • timeFence 的间隔是 5 毫秒,非常短。实际上,我会将间隔设置为可感知的时间,可能是几秒钟,或者更好的是一分钟。

  • 在前面的一点上,如果 timeMillis 是从 System.currentTimeMillis() 获得的,那么在向 API 注册栅栏时可能已经过去了当前时间加上 5 毫秒。同样,这表明在实践中使用更长的间隔。

于 2017-01-27T23:05:51.673 回答