2017-08-21 62 views
1

现在很多应用都跟踪您的位置。但是,在Android Oreo中,“应用程序将无法在后台自由运行”,如this Android Developers video中所述。位置应用程序将如何在Android O中运行?

the developer docs

应用程序可以接收位置更新仅在每个小时几次。

和任何例外情形规则:

考虑是,如果您的应用程序接收罕见的位置更新您的应用程序的使用情况在后台运行不能成功的。如果是这样的话,你可以通过执行下列操作之一检索位置更新更频繁:

...

通过调用startForegroundService开始在你的应用前景service()方法。当这样的前台服务处于活动状态时,它会在通知区域中显示为正在进行的通知。

什么,这似乎是在说,如果你在奥利奥位置跟踪的用户,你坚持在任何时候另一个正在进行的通知。它是否正确?

我真的希望有一种解决方法,因为如果我有三个跟踪位置的应用程序,即使我不移动,我的通知栏也会与三个正在进行的通知混杂在一起。

回答

3

这似乎是说,如果你想能够检测奥利奥的位置变化,你的应用程序需要一直在进行通知。它是否正确?

不完全是。这就是说,想要接收位置更新的应用比每小时几次更频繁,而不是前台活动,则很可能需要创建前台服务。正如文档指出的那样,还有其他选择(被动提供者,地理围栏,批处理API)。而且一些应用程序不会特别频繁地需要位置更新,因为底层数据不会特别频繁地更改(例如,天气应用程序小部件)。

如果我有三个应用程序,跟踪定位,我的通知栏将是混乱的三个正在进行的通知,即使我不动

恕我直言,如果你有1个+应用程序,不断跟踪你在后台的位置,你真的需要重新考虑你的生活选择。

+0

首先,我很荣幸能收到CommonsWare的答复!你的书籍和stackoverflow的巨大风扇的答案! 2.为了检测位置变化,应用程序需要连续访问位置,不是吗? 3.据我所知,文档中的其他选项(被动提供者,地理围栏,批量API)并没有提供足够频繁的跟踪位置更新。 4.目前正在重新评估哈哈。但是有很多用户使用(可能是1个)位置跟踪应用程序。他们是否坚持另一个正在进行的通知? 5.编辑我的问题来澄清。 – Patrick

+2

@Patrick:“为了检测位置变化,应用程序需要连续访问位置,不是吗?” - 再次,这取决于应用程序的需求。天气预报变化缓慢,因此只有每小时几次才能获得位置。 “他们是否坚持另一个正在进行的通知?” - 很可能,至少在一开始。坦率地说,仅仅在Android 8.0+的后台运行* code *是没有前台服务的问题。尽管如此,我还没有试验看看如果用户禁止通知会发生什么。在这种情况下,Android仍然可以提供频繁的位置更新。 – CommonsWare

+0

@Patrick:“但是有很多用户使用(可能是1个)位置跟踪应用程序” - 毫无疑问。鉴于Android设备的安全问题以及服务器遭受黑客攻击的倾向,我建议尽可能少地使用位置,特别是在后台持续使用位置。顺便说一句,感谢您的亲切的话! – CommonsWare

相关问题