我正在创建一个应用程序,通过网络广播用户的位置,因为我创建了一个服务,我在其中使用LocationListener
并从中获取更新
onLocationChanged
我已将requestLocationUpdates
设置如下
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,
15000,
0,
geoHandler);
当我在onLocationChanged
获得更新时,我通过网络广播该位置。
现在问题是onLocationChanged
过于频繁地被触发,即使它没有超过时间限制(这是完全不可预测的)并且它又会触发我的广播自定义功能位置信息太频繁了。
所以我不知道如何以适当及时的方式同步这个过程,例如每隔15秒后该位置将通过网络广播,而不是过于频繁地发布
答案 0 :(得分:1)
调用onLocationChanged
的频率是多少?
这是一种奇怪的行为,因为当你将minTime!= 0参数添加到:
时 locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, minTime, minDistance, geoHandler)
然后只有在minTime之后才会通知监听器。
经过深入研究后,我发现minTime是相对的。这取决于许多因素,因此在minTime之后不会精确调用onLocationChanged。 Google建议将此参数用于电源和电池效率。所以你应该使用is作为一个更大的值,比如1000 * 60 * 5(5分钟。)
如果你真的需要在每15秒广播你的位置,你应该记住GPS针点不能立即触发,至少需要5-10秒(最好的情况)。因此,您必须将设计更改为以下内容:
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,
0, 0, geoHandler)
onLocationChanged
中希望它对你有所帮助。
答案 1 :(得分:1)
locationManager.requestLocationUpdates (String provider, long minTime, float minDistance, LocationListener listener)
minTime
是位置更新之间的最小时间间隔,以毫秒为单位
minDistance
是位置更新之间的最小距离,以米为单位
您将minTime设置为15秒,但由于您的minDistance为0米,因此触发过于频繁。它不需要等待15秒才能通过,因为GPS值的轻微变化会触发位置更新。给一些米(例如1或3)应增加更新之间的间隔。