保持地理定位服务运行?
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() 启动的,那么它的生命周期不会绑定到活动或任何东西。 您提到了绑定到活动的服务。并不真地。任何可以访问上下文对象的类都应该能够启动绑定服务。是的,最明智的用途是活动,但它不是唯一可能的地方。以上是关于保持地理定位服务运行?的主要内容,如果未能解决你的问题,请参考以下文章
当应用程序未运行(终止/终止)时,如何保持核心位置和核心蓝牙运行?