保持地理定位服务运行?

Posted

技术标签:

【中文标题】保持地理定位服务运行?【英文标题】:Keeping a geolocation service running? 【发布时间】:2011-10-05 10:19:33 【问题描述】:

我被要求做一个可以在某些员工工作时间运行地理定位服务的应用。我有几个问题:

-只要用户不停止服务(启动/停止按钮),是否可以运行服务?据我了解,服务绑定到活动,android 可以随时终止活动......

-就电池寿命而言,进行位置跟踪的最佳方法是什么? 1/每 x 秒创建、获取更新和删除 LocationManager 和 2/创建一次 LocationManager 并将 LocationManager.requestLocationUpdates 中的 minTime arg 设置为 x 是否相同?

谢谢

【问题讨论】:

【参考方案1】:

1) 是的,只要用户(或在资源紧缩时,系统)不终止服务,就可以保持服务运行。必须以这种方式运行的服务应该覆盖

onStartCommand() 

方法和启动方式

Context.startService() 

您指的是覆盖 onBind() 并通过

启动的服务
context.bindService()

阅读服务文档,它包含对两种服务生命周期的描述。

2) Reto Meier 撰写的here 是地理定位最佳实践的最佳指南之一。看看吧

【讨论】:

如果绑定到服务的activity被系统杀死了,那么服务也被杀死了,对吧? 服务被终止是由于活页夹对象被泄露的副作用。所以是的,出于所有意图和目的,如果服务绑定到活动,它将被杀死。但是,如果服务是使用 Context.startService() 启动的,那么它的生命周期不会绑定到活动或任何东西。 您提到了绑定到活动的服务。并不真地。任何可以访问上下文对象的类都应该能够启动绑定服务。是的,最明智的用途是活动,但它不是唯一可能的地方。

以上是关于保持地理定位服务运行?的主要内容,如果未能解决你的问题,请参考以下文章

地理位置保持浏览器会话持久

当应用程序未运行(终止/终止)时,如何保持核心位置和核心蓝牙运行?

Cordova 地理定位无法在 Android 上运行

为啥地理定位在深度清理后停止在 Android Go 上运行?

我的应用程序第二次没有初始化/地理定位插件

我无法在地理服务器上运行我的 php 脚本