我正在编写一个应用程序,可以在很长一段时间内将传感器数据复制到文本文件中。所以我想尽可能少地使用电池,因此需要更慢的轮询时间。
目前我有这个作为我的倾听者:
sMgr.registerListener(this,sProximity,5000000);
我认为应该每5,000,000微秒轮询一次传感器。然而,它似乎每秒约4次轮询它。无论我投入什么价值,这实际上都不会改变。
目前我只是使用onSensorChanged方法覆盖在应用程序中显示传感器数据 - 这就是为什么它如此频繁地轮询传感器的原因?
答案 0 :(得分:2)
你不能“慢慢地轮询传感器”。
根据docs:
samplingPeriodUs
速率传感器事件在。这只是对系统的暗示。可以比指定的速率更快或更慢地接收事件。通常会更快地收到事件。
对于电池使用情况而言,每5秒进行一次轮询并不会对轮询提供任何好处,因为任何一种都会阻止设备进入睡眠模式。
如果这仅用于测试目的,并且最终你看的时间比5秒更长,即15或30分钟,那么一种方法是使用AlarmManager
来设置重复警报启动Service
,它注册传感器的监听器,存储值,并取消注册监听器,直到触发下一个报警。
如果你确实想要每5秒进行一次轮询并且你只关心更快速轮询的存储空间,你可以只为最后一个存储值存储一个时间戳,并且只丢弃比你想要的轮询周期更快收到的每个值,但正如我之前所说,这对电池消耗没有帮助。