在非唤醒服务中轮询 gps 位置数据是一种好的做法吗?
Is polling gps location data within a non-wakeful Service a good practice?
在常规 activity 中,当我们想要接收更新时必须注册到 LocationManager,并在稍后删除更新,例如例如在 onPause() 中。
但是,在可能随时终止的非唤醒服务中,我如何确保 LocationManager 不会保持 GPS 开启?
(我不能保证服务的onDestroy方法真的会被调用,甚至前台服务也可能被杀死...)
我问这个是因为我在服务中找不到任何关于轮询位置的警告,但我怀疑这可能是一个坏习惯。
您可以保留可以 运行 间隔的服务。服务还包含您的 LocationManager 实例和您当前的 activity 上下文。
当您的 activity 被销毁时,您的 Context 将被设置为 null,您可以自行停止位置请求和服务。
正在尝试强制停止服务,位置管理器似乎
足够聪明,可以在 LocationListener 失效时关闭 GPS,
所以案子结案了...
在常规 activity 中,当我们想要接收更新时必须注册到 LocationManager,并在稍后删除更新,例如例如在 onPause() 中。
但是,在可能随时终止的非唤醒服务中,我如何确保 LocationManager 不会保持 GPS 开启? (我不能保证服务的onDestroy方法真的会被调用,甚至前台服务也可能被杀死...)
我问这个是因为我在服务中找不到任何关于轮询位置的警告,但我怀疑这可能是一个坏习惯。
您可以保留可以 运行 间隔的服务。服务还包含您的 LocationManager 实例和您当前的 activity 上下文。
当您的 activity 被销毁时,您的 Context 将被设置为 null,您可以自行停止位置请求和服务。
正在尝试强制停止服务,位置管理器似乎 足够聪明,可以在 LocationListener 失效时关闭 GPS, 所以案子结案了...