locationListener 仅在服务中请求时调用一次
Posted
技术标签:
【中文标题】locationListener 仅在服务中请求时调用一次【英文标题】:locationListener is only called once when requested in a Service 【发布时间】:2011-06-22 08:25:43 【问题描述】:我写了一个小应用程序,它有一个 Activity 来控制和显示 数据,以及从 GPS 获取数据并将其发送到 活动。 这样做的原因是,即使在 Activity 结束后我也喜欢它运行 退出了。。
我在位置侦听器删除的末尾做了一项工作 监听器并重新定义它..
lm.removeUpdates(locationListener);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, iGPSMovement, locationListener);
但这并不好,现在它在我的 HTC 愿望 Z 上失败了。
有人遇到过这种情况吗? 解决方法是什么?
我编写了一个不使用服务的小型应用程序(一个活动),并且 与仅在 onCreate.. 调用的 requestLocationChange 一起工作正常。
请帮忙 金
【问题讨论】:
您可以发布您的服务代码吗? 谢谢,我已经完成了一个全新的代码并且正在处理它,我相信这是我的服务监听器功能在玩我。当我完成测试时,我会更新你。 . 好的,所以我尝试重写一个超级简单的服务和活动并使用广播接收器,它就像一个魅力...... 所以我转换了我的应用程序,但它仍然无法正常工作......但后来我发现 Meters 运动必须为 0 才能使请求工作在我的 Desire 上......这是奇怪的还是什么?无论如何,这解决了我的问题.. lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, locationListener);是我最终的结果.. 【参考方案1】:不确定这是否重要,但您必须将距离设置为 0 的原因是,这是单元必须移动的最小距离才能触发线程。因此,如果电话放在您的桌子上,并且在程序开始时没有移动至少 X 距离,您将不会获得更新。通过将其设置为 0,您将强制程序以最小时间间隔更新,而不管移动距离如何。我很确定它只有在满足两个最低条件时才有效。 IE。已经超过 5 秒,你已经移动了 10 米。
【讨论】:
【参考方案2】:好的,所以我尝试重写一个超级简单的服务和活动,并使用广播接收器,这就像一个魅力.. 所以我转换了我的应用程序,但它仍然无法正常工作......但我随后发现 Meters 运动必须为 0 才能使请求工作在我的 Desire 上......这是奇怪的还是什么?无论如何,这解决了我的问题..
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, locationListener);
这是我最终得到的结果,并且无论我如何在服务和活动之间进行通信,它都可以修复所有问题..
【讨论】:
以上是关于locationListener 仅在服务中请求时调用一次的主要内容,如果未能解决你的问题,请参考以下文章
是否需要为具有活动 LocationListener 的 Android 服务获取唤醒锁?
带有 locationListener 回调的 Android 服务