前提
用户应始终被告知其敏感数据的使用情况(如在后台收集位置(,此问题旨在更好地了解Android使用位置和后台操作的最新限制。
问题
是否仍有可能(在Android最新版本上(创建一个位置跟踪服务,无论应用程序状态(前台/后台(还是设备状态(休眠或待机模式,应用程序桶(,都能持续跟踪设备位置,以便能够以一致的方式收集位置?
假设GPS和互联网连接已启用并可用,是否有可能收集位置,比如说每10分钟收集一次,或者进入休眠模式或待机状态的设备在一段时间后会限制应用程序的可能性,并推迟操作(如网络操作(,从而无法定期更新位置?
在最新的安卓版本上,从安卓8.0(API 26(开始,引入了提高电池性能和保护用户隐私的新方法:
- 背景限制
- 背景位置限制
- 应用程序备用存储桶
我尝试了什么
根据我的理解,前台服务看起来是最好的选择:
- 不断通知用户(通知(
- 系统不会在几秒钟后终止服务(对于从API 26开始的后台服务(
- 不太可能被系统停止(START_STICKY标志将重新启动(
- 可以获取唤醒锁
仍然需要将应用程序列入白名单,以避免电池优化,甚至需要禁用电池优化,以避免服务停止/延迟。
预期结果
每隔10分钟定期接收位置更新,例如
您必须在服务中使用FusedLocationProviderClient才能在指定的时间间隔或距离内为您提供位置。如果你选择距离,你也必须注意位置的准确性。请参阅本文。