LocationManager#requestLocationUpdates
允许您传入minTime和minDistance参数。我很难决定这些数字应该是什么,并且可以欣赏一些指导。
我们的应用不是一个转弯导航应用;我只是想展示10个最近的景点。由于我显示最近的10,它们可能会变得有点陈旧,但如果用户在移动的车辆中,我希望/需要经常更新它们以避免陈旧。
我想很多人都处于模糊要求的同一位置:“我不希望数据过于陈旧,但我不想浪费电池。”我怎样才能将这些模糊的要求变成具体的数字?
答案 0 :(得分:3)
***<Edit>***
As of JellyBean, the criteria is (minTime & minDistance), so it has
to satisfy both to return a location.
***</Edit>***
根据你的问题,听起来像minTime参数是无关紧要的。
你真正需要担心的是minDistance,因此如果用户处于快速移动的车辆中,它将会跟上。
如果一个人驾驶60英里/小时,他们每秒移动约27米。
考虑这个标准......我想说:
minTime = 60000 //每60秒更新一次 minDistance = 90 //在快速移动的车辆中,它将每3秒更新一次
答案 1 :(得分:3)
通知的频率或新的 可以使用。来控制位置 minTime和minDistance参数。如果 minTime大于0,即 LocationManager可能会休息 for minTime毫秒之间 位置更新以节省电力。如果 minDistance大于0,a 位置只会在广播时播出 设备按minDistance米移动。至 经常获取通知 可能,将两个参数都设置为0。 后台服务应该小心 关于设置足够高 minTime,以便设备不会 通过保持消耗太多的电力 所有的GPS或无线电台 时间。特别是,价值观 不建议使用60000毫秒。
答案 2 :(得分:1)
我可以建议一个更好的想法,最初请求稍微更大的间隔更新并获取位置。现在检查连续位置之间的距离是否大于区分较近位置的最小距离,将请求更新间隔更改为较低值。类似地,如果在此较低的间隔中,您计算的距离远低于指示用户未通过车辆行驶的距离,则将间隔更新为更大的值。 要更新间隔,您必须取消注册上一个侦听器,然后重新注册新值。
答案 3 :(得分:0)
对于您手头的问题,请查看PASSIVE_PROVIDER。基本上,当任何其他应用程序可能要求更新时,它将帮助您获得更新。因此,您可以将其与其他提供商结合使用。