【问题标题】:How to receive location updates after reboot重启后如何接收位置更新
【发布时间】:2023-03-21 01:22:01
【问题描述】:

我正在使用此示例接收位置更新:

https://github.com/googlesamples/android-play-location/tree/master/LocationUpdatesPendingIntent

在我使用 Google API 客户端的连接实例注册位置请求后,它会接收位置。 我的问题是如何在设备重启后重新注册 Google Api Client?有人说Android O会限制后台服务,不推荐一个服务?

我发现此链接很有用,但仍然不知道操作系统的实际行为以及将我的应用程序视为前台还是后台?

https://developer.android.com/preview/features/background.html#services

【问题讨论】:

    标签: location google-play-services android-7.0-nougat android-8.0-oreo


    【解决方案1】:

    我的问题是如何在设备重启后重新注册 Google Api 客户端?

    ACTION_BOOT_COMPLETED 广播的清单中注册 BroadcastReceiver。然后,在其onReceive() 方法中,重新注册您的位置更新请求。

    有人说Android O会限制后台服务,不推荐一个服务?

    您是否使用服务来注册位置更新或处理位置更新取决于在这些点中的任何一个需要进行哪些工作。如果您正在执行任何类型的 I/O(磁盘 I/O、网络 I/O 等),则应该使用服务。

    Android O 的变化在于:

    • 纯后台服务只能运行一分钟左右;如果您可能需要更多时间,则需要考虑使用前台服务

    • 位置更新将不那么频繁地传送到后台应用程序

    【讨论】:

    • 有趣!您是否在 Google 文档中阅读过纯后台服务和一分钟时间?
    • @AVEbrahimi:一分钟时间是基于我自己对Android O的实验;文档表明它将是“几分钟”。
    • 谷歌文档说在Android O系统中每30分钟会报告一次位置更新,但是如果用户在此期间频繁移动,会不会在更短的时间内报告?
    • 您说“重新注册您的位置更新请求”,但是连接到 Google API 客户端需要一些时间,广播接收器将终止并且我无法收到 OnConnected 消息,我该怎么办?
    • 这份文件developer.android.com/preview/features/background.html 说“另一个前台应用程序连接到该应用程序,或者通过绑定到它的一个服务或通过使用它的一个内容提供商”,Google Play 服务被认为是另一个应用程序,它让我的应用程序保持活力?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 2017-05-30
    • 1970-01-01
    相关资源
    最近更新 更多