gpt4 book ai didi

android - 如果应用程序使用正常优先级的 GCM 消息,它是否始终可以访问网络?

转载 作者:行者123 更新时间:2023-11-30 01:51:54 24 4
gpt4 key购买 nike

有时,当我在我的 Android 应用程序中收到正常优先级的 GCM 消息时,网络似乎不可用。普通优先级 GCM 消息是否会自动授予应用程序临时豁免 Android M 的新 Doze and App Standby sleep 条件(即限制网络访问)?

完整上下文:我在 Android-M 发布之前实现了一个应用程序,它使用 GCM 消息传递来触发已安装的应用程序实例以按需下载更新。这是 best practice过度轮询更新。

Android-M 引入了 Doze 和 AppStandby,它们似乎能够在应用未使用 new high-priority 时限制网络访问消息类型。

我应该将这些挠痒痒消息切换为高优先级消息,还是在收到普通优先级消息时可以访问网络?我对 Android M 预览版的测试似乎表明网络有时不可用。

最佳答案

网络访问可能可用,您不应该为了确保网络访问可用而将消息类型切换为高优先级。只有在该设备上的用户迫切需要 GCM 消息时,才应切换消息类型。一般规则是,在考虑有关 creating notifications 的指导时,通知将属于高类别。 .如果您当前对定期同步请求和紧急消息使用相同的 GCM 消息,您应该将它们分开。

关于“网络访问可能可用”的更多细节:

截至October 1st最新版本的 Google Play 服务将 GCM 正常优先级消息的传递与 Doze 的维护模式相关联,因此网络通常不会受到限制。提出这个问题的开发人员应该考虑到,一个强大的应用程序通常会同时处理打瞌睡和现实世界的网络连接问题。该应用通常会:

  • 不在接收 GCM 消息时调用的回调中执行网络工作。
  • 当应用收到 GCM 消息回调时,应用将使用 GCMNetworkManager、JobScheduler 或至少使用 SyncAdapter 安排工作。

网络调度例程:

  • 关联 Doze 维护时段内的工作执行。
  • 允许额外的精细调度参数,以提供更好的用户体验,特别是在电池生命周期方面(Wifi 与蜂窝网络、充电等)。
  • 获取唤醒锁以尝试防止设备在执行工作中途进入休眠状态。 Doze 有时会忽略唤醒锁,例如在维护窗口结束时。
  • 具有指示工作已完成并在适当时重新安排的内置方式。
  • 使用指数退避重新安排工作可能会在中断期间减轻开发人员的服务器负担,并在网络连接出现问题时为用户提供更长的电池续航时间。

注意:在使用设备(包括配备 Android M 预览版的设备)进行测试时,请确保 Google Play 服务在测试前完全是最新的 (v8.1+)。这通常需要打开 Google Play 商店应用并接受服务条款。

关于android - 如果应用程序使用正常优先级的 GCM 消息,它是否始终可以访问网络?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32913426/

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