【问题标题】:Android O: what will be effect of the new version of Android on Location Updates?Android O:新版Android对位置更新有什么影响?
【发布时间】:2018-01-15 02:52:29
【问题描述】:

我的应用目前正在使用 PendingIntent.getBroadcast 从 FusedLocationApi 接收位置更新。我的位置更新在 Android O 中会受到怎样的影响?我浏览了此链接中给出的文档:https://developer.android.com/preview/features/background.html#broadcasts。 但我仍然不确定我的情况。我没有前台或后台服务来接收来自 FusedLocationApi 的位置更新。我已经注册了一个广播接收器,它一直在监听来自 FusedLocationApi 的任何更新。

提前致谢。

【问题讨论】:

  • 这取决于您的广播接收器是在后台运行还是在前台运行。如果它是 Activity 的一部分,则位置更新应该像以前一样工作。在此上下文中的前台应被解释为用户可见,无论是通过 Activity 还是前台服务(作为通知可见)。
  • 我的 BroadcastReceiver 扩展了 WakefulBroadcastReceiver。每次收到位置更新时,它都会在后台启动一项服务。
  • 你的广播接收器也在某个地方运行,问题是这是前台还是后台上下文。
  • 它在后台。
  • 您需要将其更改为不受 Android O 后台位置限制的影响。见这里:developer.android.com/preview/features/…

标签: android location android-fusedlocation android-8.0-oreo


【解决方案1】:

是的,您的应用受到多种影响。无论您如何设置位置请求,您在一小时内只会收到几次更新。此外,您无法从接收器启动服务,只有当服务处于前台或用户将您的应用排除在电池优化之外时,您才能执行此操作。所以如果你真的需要频繁更新,你需要启动一个前台服务来让你的应用保持在前台。服务可以是“空的”(没有工作),你可以保持你当前的设计,目标只是让你的应用程序在前台

【讨论】:

  • 您能否详细说明“此外,您无法从接收器启动服务,只有当服务处于前台或用户将您的应用排除在电池优化之外时,您才能执行此操作。”我还没有读过这个。另外,你能把你找到这些信息的链接分享给我吗?谢谢。
  • 有趣。谢谢你。差点错过了这一点。我可以从后台接收器作为前台服务启动服务的次数是否有限制?
  • 不,没有限制,重要的是在前台启动它。
  • @greywolf82 “此外,您不能从接收器启动服务,只有当服务在前台时才能启动”:您可以使用 PendingIntent.getForegroundService 或使用 Context。 startForegroundService.
猜你喜欢
  • 2017-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-06
  • 1970-01-01
相关资源
最近更新 更多