我开发了一个应用程序,它通过 GPS 跟踪用户,并在他们通过收费桥时提醒他们。
我显然需要 GPS 位置监听器在服务中运行,我还需要一个部分唤醒锁,以便它可以在手机睡着时偶尔运行。我还希望 GPS 更新的频率根据与收费桥的距离而有所不同,以节省电池。cwac- WakefulIntent 服务似乎非常适合我想要实现的目标。
然而,在我走这条路之前,我可以看到我遇到了一些问题(如果你原谅双关语;-)。
一旦 doWakefulWork() 完成,WakefulIntent 服务是否退出并释放唤醒锁,即使我正在等待我的位置侦听器返回一些 GPS 更新。
在我获得位置更新并清理我的听众之前,如何防止 doWakefulWork 返回。
如果警报管理器再次启动服务时(即在 doWakefulWork() 完成之前)我仍在等待 GPS 更新,会发生什么情况?
如何在服务的实例之间保留数据。我可以将一系列 GPS 坐标填充到 SharedPrefs 中吗?
最后,当我靠近收费桥时,我需要更频繁地更新 GPS。我是在 doWakefulWork() 中管理它还是通过更改 scheduleAlarms() 来管理它,以便它使用 setRepeating() 并由服务存储在 SharedPrefs 中的分钟数。这里的想法是根据与感兴趣区域的接近程度来限制 GPS 的使用。
虽然演示应用程序提供了一个可以使用的模板,但我找不到任何可靠的 WakefulIntentService 执行任何异步作业的示例。