android listener回调,具有locationListener回调的Android服务

本文探讨了如何在Android服务中获取最新的位置数据。特别是在GPS信号不佳的情况下,如何通过IntentService使用getLastKnownLocation()来获取位置信息,并在没有位置更新时注册更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

but what if I do want the latest location right now, in a service and not activity?

抱歉,无论是服务还是活动都无法做到这一点.例如,如果GPS无线电关闭,并且您正在从GPS请求位置数据,则只需要几十秒即可获得修复,如果您幸运的话.它可能根本没有得到修复.

How can I wait for callback to happen and stop my service from returning.

你没有.你做你说你会做的事:

use getLastKnownLocation from locationManager as that doesn’t respond back by callback

因此,让您的服务(希望是一个IntentService)检查getLastKnownLocation()是否恰好有值.如果是,请使用它.否则,registerLocationUpdates()使用PendingIntent将控制权传递给您的IntentService.当您获得该Intent时,请使用该位置并取消注册以进行更新(假设警报周期很长且很长,例如,每小时一次).

如果您的闹钟是_WAKEUP警报,事情会变得棘手.然后,您需要按住WakeLock,这样设备在您尝试获取GPS定位时不会回来睡着.但是,你需要在某个时候释放那个WakeLock,如果我们无法获得GPS修复……嗯……好吧,那是棘手的部分.试图找出一个很好的处理方法,并将其作为可重用的组件(例如,LocationAlarmService)实现,是我的待办事项列表中的18,000个项目之一.

Also, at what point does lastKnownlocation gets updated? Everytime GPS registers a new location; does it > update it?

AFAIK,是的.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值