【问题标题】:Using WakefulIntentService for managing asynch GPS updates使用 WakefulIntentService 管理异步 GPS 更新
【发布时间】:2012-04-15 20:35:14
【问题描述】:

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

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

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

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

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

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

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

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

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

【问题讨论】:

    标签: android service asynchronous gps android-pendingintent


    【解决方案1】:

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

    不是真的。 IntentService 不适合位置跟踪,因为您无法注册侦听器。一旦onHandleIntent() 结束,服务将关闭。

    就个人而言,我会在LocationManager 上使用addProxmityAlert(),而不是自己搞砸这些。

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

    是的。

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

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

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

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

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

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

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

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

    我找不到任何可靠的 WakefulIntentService 执行任何异步作业的示例。

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

    【讨论】:

    • 谢谢。指向 doProximityAlert() 的指针给了我可以去的地方。现在我只需要弄清楚如何使用唤醒锁编写服务或使用始终运行的服务模板。
    猜你喜欢
    • 2021-10-12
    • 2018-01-23
    • 2018-07-18
    • 1970-01-01
    • 2016-06-01
    • 2014-02-16
    • 1970-01-01
    • 2013-01-30
    • 1970-01-01
    相关资源
    最近更新 更多