0

我开发了一个应用程序,它通过 GPS 跟踪用户,并在他们通过收费桥时提醒他们。

我显然需要 GPS 位置监听器在服务中运行,我还需要一个部分唤醒锁,以便它可以在手机睡着时偶尔运行。我还希望 GPS 更新的频率根据与收费桥的距离而有所不同,以节省电池。cwac- WakefulIntent 服务似乎非常适合我想要实现的目标。

然而,在我走这条路之前,我可以看到我遇到了一些问题(如果你原谅双关语;-)。

一旦 doWakefulWork() 完成,WakefulIntent 服务是否退出并释放唤醒锁,即使我正在等待我的位置侦听器返回一些 GPS 更新。

在我获得位置更新并清理我的听众之前,如何防止 doWakefulWork 返回。

如果警报管理器再次启动服务时(即在 doWakefulWork() 完成之前)我仍在等待 GPS 更新,会发生什么情况?

如何在服务的实例之间保留数据。我可以将一系列 GPS 坐标填充到 SharedPrefs 中吗?

最后,当我靠近收费桥时,我需要更频繁地更新 GPS。我是在 doWakefulWork() 中管理它还是通过更改 scheduleAlarms() 来管理它,以便它使用 setRepeating() 并由服务存储在 SharedPrefs 中的分钟数。这里的想法是根据与感兴趣区域的接近程度来限制 GPS 的使用。

虽然演示应用程序提供了一个可以使用的模板,但我找不到任何可靠的 WakefulIntentService 执行任何异步作业的示例。

4

1 回答 1

0

cwac- WakefulIntent 服务似乎非常适合我想要实现的目标。

并不真地。IntentService不利于位置跟踪,因为您无法注册侦听器。该服务将在结束后关闭onHandleIntent()

就个人而言,我会使用addProxmityAlert()on LocationManager,而不是自己弄乱这些。

一旦 doWakefulWork() 完成,WakefulIntent 服务是否退出并释放唤醒锁,即使我正在等待我的位置侦听器返回一些 GPS 更新。

是的。

在我获得位置更新并清理我的听众之前,如何防止 doWakefulWork 返回。

你没有。您使用其他东西,例如LocationPoller, 或者,更好的是,addProximityAlert()

如果警报管理器再次启动服务时(即在 doWakefulWork() 完成之前)我仍在等待 GPS 更新,会发生什么情况?

您确保有适当的超时逻辑来防止这种情况发生,例如可以在LocationPoller.

如何在服务的实例之间保留数据。我可以将一系列 GPS 坐标填充到 SharedPrefs 中吗?

是的,或者是数据库,或者是您选择的格式的文件。

最后,当我靠近收费桥时,我需要更频繁地更新 GPS。我是在 doWakefulWork() 中管理它还是通过更改 scheduleAlarms() 来管理它,以便它使用 setRepeating() 并由服务存储在 SharedPrefs 中的分钟数。

你会改变你的闹钟时间表。

我还没有找到任何可靠的 WakefulIntentService 做任何异步工作的例子。

WakefulIntentService “异步作业”。它不执行其他异步作业。

于 2012-04-15T20:47:31.597 回答