在后台运行应用程序,如谷歌纬度

Posted

技术标签:

【中文标题】在后台运行应用程序,如谷歌纬度【英文标题】:Running application in background like google latitude 【发布时间】:2011-08-14 19:18:34 【问题描述】:

我现在正在开发一个跟踪用户位置的应用程序。 我希望这个应用程序即使不在任务列表中也能运行(双击主页按钮不显示它)。 与谷歌纬度一样,该应用程序不在后台运行。 我认为这个文档是关于当用户按下主页按钮时正在运行的应用程序:http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/BackgroundExecution/BackgroundExecution.html

但是如果用户通过双击主页按钮关闭此应用程序怎么办?我知道像谷歌纬度这样的应用程序仍在后台运行。那我该怎么做呢?

【问题讨论】:

【参考方案1】:

应用程序能够再次在后台运行,以防它在上次启动时注册了重大位置更改。如果 Google latitude 重新启动应用程序,那么他们会使用以下流程:

    应用程序启动 检查设备是否可以提供重要的位置变化通知(具有蜂窝数据的设备可以处理这种通知):significantLocationChangeMonitoringAvailable 注册通知:startMonitoringSignificantLocationChanges 退出应用程序,一旦您的设备离开一个基站到另一个基站,系统就会发送通知,您的应用程序将被唤醒。

有一个问题,没有正常的方法可以从此通知中取消注册。我认为只有为用户提供停止监控的选项。我注意到了这一点,状态栏右上角的箭头表示有人正在使用位置服务。

【讨论】:

【参考方案2】:

我可以向您保证,谷歌纵横仅在用户运行时(可见)或作为后台进程运行时(多任务可用时)更新用户的位置。

谷歌纵横正在使用location 后台服务,当应用在后台运行时,该服务使用手机信号塔来确定设备的位置(如您链接的文档中所述)。如果不是正在运行的进程,则 Latitude 应用无法更新位置。

【讨论】:

Latitude 实际上会更新其位置,即使它未运行且不在多任务处理托盘中。我可以向你保证,确实如此。

以上是关于在后台运行应用程序,如谷歌纬度的主要内容,如果未能解决你的问题,请参考以下文章

我可以通过始终在后台运行的服务跟踪 gps 纬度和经度吗?

让应用程序始终在 Android 上后台运行

应用程序在后台运行时如何获取当前位置

我怎么知道我的应用程序在后台运行?

如何在后台运行android应用程序[重复]

没有从后台服务获取纬度和经度