gpt4 book ai didi

android - 当应用程序处于前台时检测 Android 7.0 Nougat 上的连接变化

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:20:57 26 4
gpt4 key购买 nike

Nougat 改变了它处理 CONNECTIVITY_CHANGED Intent 的方式(基本上忽略它,迫使开发人员使用作业调度程序)所以这让我想知道:

如果我有一个正在检索某些数据的应用程序(并且我在发出请求时检查了手机是否在线,但用户正在移动并且手机连接到不同的 wifi 接入点,例如)并且它失败了,我如何检测到连接已恢复并且我可以重试获取数据?

所以在这种情况下,我的应用程序在前台,我认为 Chrome (for android) 具有类似的功能。

我需要自己投票吗?或者当时有什么 Activity 是允许的?

最佳答案

虽然可以使用 Andromeda 的答案,但该解决方案并不是 Google 的预期选择。您的问题是当连接丢失时该怎么办,您需要在网络服务恢复时恢复操作。

虽然 CONNECTIVITY_CHANGE 在技术上是可行的,但对于这种特定需求来说总是有点破解,一旦您的应用程序进入后台,它就会在 Nougat 中停止工作。您真正应该使用的是作业调度程序 API。 Google 为我们提供了许多具有不同要求和功能的选项。

  1. 作业调度器

JobScheduler 已添加到 Lollipop 中,并添加了一个可以等待网络连接来安排作业的调度程序。它甚至可以取决于连接的类型,检查不按流量计费或非漫游的连接。此选项没有向后兼容性,但可以在没有 Google Play 服务的情况下使用。

  1. GCM 网络经理

GcmNetworkManager 是 JobScheduler 功能到 Lollipop 之前版本的直接端口,但它需要 Google Play 服务。 GcmNetworkManager 大部分已被 Firebase Job Dispatcher 弃用。

  1. Firebase 作业调度程序

Firebase JobDispatcher 提供了另一种方法来为 Lollipop 之前的版本安排作业,它默认使用 Google Play 服务,但可以配置为不需要这种依赖性。

  1. 工作经理

我刚刚编辑了这篇文章,添加了 Google 用 WorkManager 替换了之前的所有三个作业调度器,WorkManager 几乎在所有方面都优于其他的。您可以设置作业运行所需的网络类型。您甚至可以一个接一个地将作业链接在一起。

所有这些选项都将以电池友好的方式满足您的需求,即使设备从打盹模式短暂唤醒,您的作业仍会按计划进行。

以下是有关各种选项的更多信息以及 Google 提供的示例:

https://developer.android.com/topic/performance/scheduling.html https://developer.android.com/topic/performance/background-optimization.html#sched-jobs

关于android - 当应用程序处于前台时检测 Android 7.0 Nougat 上的连接变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39210191/

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