Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在非唤醒服务中轮询gps位置数据是一种良好的做法吗?_Android_Service_Gps_Location - Fatal编程技术网

Android 在非唤醒服务中轮询gps位置数据是一种良好的做法吗?

Android 在非唤醒服务中轮询gps位置数据是一种良好的做法吗?,android,service,gps,location,Android,Service,Gps,Location,在常规活动中,当我们希望接收更新时,必须注册到LocationManager,并在稍后某个时间删除更新,例如在onPause内 但是,在任何给定时间都可能死亡的非唤醒服务中,我如何确保LocationManager没有保持GPS开启? 我不能保证服务的onDestroy方法会被调用,甚至前台服务也可能被终止 我之所以问这个问题,是因为我在服务中找不到关于轮询位置的任何警告,但我怀疑这可能是一个坏习惯。您可以保留一个可以间隔运行的服务。服务还包含LocationManager和当前活动上下文的实例

在常规活动中,当我们希望接收更新时,必须注册到LocationManager,并在稍后某个时间删除更新,例如在onPause内

但是,在任何给定时间都可能死亡的非唤醒服务中,我如何确保LocationManager没有保持GPS开启? 我不能保证服务的onDestroy方法会被调用,甚至前台服务也可能被终止


我之所以问这个问题,是因为我在服务中找不到关于轮询位置的任何警告,但我怀疑这可能是一个坏习惯。

您可以保留一个可以间隔运行的服务。服务还包含LocationManager和当前活动上下文的实例


当您的活动被破坏时,您的上下文将被设置为null,您可以自行停止locationrequest和服务。

尝试强制停止服务时,位置管理器似乎 只要LocationListener死了就可以关掉GPS,
因此案例已结束…

事实上,我的服务在被终止后会再次被唤醒,但它大部分时间都不在活动上下文中,因此活动的onDestroy是不够的。无论何时服务被终止,我都没有机会优雅地停止位置请求,更不用说再次请求位置侦听器实例时出现的问题了——无论何时服务被恢复。。。。START_STICKY可用于广播接收器?我看不出有什么帮助。我搜索了一个逻辑答案,但没有找到支持证据,那就是LocationManager足够聪明,一旦处理了侦听器引用,就不会继续轮询gps,否则就无法在服务内部轮询gps。。。。