我用它来设置时间范围:
ArrayList<AwarenessFence> awarenessFences = new ArrayList<AwarenessFence();
awarenessFences.add(TimeFence.inInterval(timeInMillis, timeInMillis+5L));
AwarenessFence customFence = AwarenessFence.and(awarenessFences);
但是,当时间落在timeMillis和timeMillis + 5L之间时,不会触发围栏。 我的接收器工作正常,因为所有其他围栏都按预期工作。 TimeFence背后的问题可能不起作用?
答案 0 :(得分:1)
该问题没有足够的信息来查明潜在的问题。从测试开始,提到的具体时间栅栏按预期工作。我可以尽最大努力指出一些常见问题。
查看TimeFence.inInterval的文档,开始和停止时间millis是自纪元以来的millis数。请检查传递的参数实际上是自纪元以来的毫秒数(与特定时区或自一天开始时相反)
timeFence的间隔是5毫秒,非常短。作为一个实际问题,我会将间隔设置为可感知的东西,可能是几秒或更好,一分钟。
在前一点,如果从System.currentTimeMillis()获取timeMillis,那么当注册API时,当前时间加上5 ms可能已经过了。同样,这指出在实践中使用更长的间隔。