gpt4 book ai didi

android - 在后台服务中使用 GoogleAPIClient

转载 作者:行者123 更新时间:2023-11-30 01:03:53 25 4
gpt4 key购买 nike

我的场景是我希望有一个服务定期获取一些信息(例如用户的位置),将其报告到我的服务器并在该位置与某个 X 位置匹配时接收推送通知。

无论应用程序是否正在运行,我都希望得到一些关于定期检索位置信息的最佳机制的建议。以下是我考虑过的选项以及每个选项的一些背景信息。

创建标准 Android 服务

我的第一个想法是创建一个 STICKY 服务来初始化一个 GoogleAPIClient,它将获取位置更新,一旦收到位置,它就会将其发送到服务器。这种方法的问题是我必须定期获取位置信息。因此,即使没有运行位置扫描,该服务也会持续运行。另外,在服务中经常轮询位置的最佳方式是什么?

使用 IntentService 创建警报

我考虑的第二个选项是让警报管理器唤醒并启动一个 IntentService 来启动位置更新(通过 GoogleAPIClient)。获得位置后,发送到服务器并关闭位置更新。这将解决定期启动/停止位置更新的问题。但是,我在不等待的情况下连接到 IntentService 中的 GoogleAPIClient 的运气并不好,我认为这不是最有效的做法。

创建 GcmTaskService

这具有 AlarmManager 的许多优点,并且在打瞌睡模式方面似乎更有效,因为它只会在手机处于维护模式时唤醒服务,因此这似乎是一个很好的解决方案。但是,我遇到了与连接到 GoogleAPIClient 的 IntentService 相同的问题,无需某种等待即可获取位置。

我可能在这个问题上走得太远了,可能我遗漏了一些明显的东西,所以任何建议都将不胜感激。

最佳答案

我遇到了同样的问题。我选择了第一种方法(粘性服务)并且一切正常。但是,我不喜欢该服务始终运行并且对用户可见的事实。这就是我决定使用 JobScheduler API 的原因,因为它是根据 docs 执行后台工作的首选方式。 .

如果您的应用程序以 API>=21 为目标,那么 JobScheduler 是最佳选择。如果你想支持旧版本的平台,那么你应该使用最近推出的 Firebase JobDispatcher库,遗憾的是缺少文档。

一切都有解释here在 Google I/O 2016 演示中。看一看。

关于android - 在后台服务中使用 GoogleAPIClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39087237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com