gpt4 book ai didi

android - 在 Android 中使用 JobScheduler 检测网络状态变化

转载 作者:IT老高 更新时间:2023-10-28 23:33:13 29 4
gpt4 key购买 nike

在 Android N 中,您不能为 CONNECTIVITY_CHANGE Intent 静态注册广播接收器。

来自 http://developer.android.com/preview/features/background-optimization.html#connectivity-actionGoogle 文档建议使用 Job Scheduler 来执行此任务。

是否可以使用 Android 中的 Job Scheduler 检测网络状态变化(LTE 到 wifi),反之亦然?

最佳答案

是和不是。

JobInfo.Builder.setRequiredNetworkType() 方法允许您安排作业在满足特定网络条件时运行。

网络类型可以是三个值之一:

  • JobInfo.NETWORK_TYPE_NONE:无需网络连接。
  • JobInfo.NETWORK_TYPE_UNMETERED:不计量 WiFi 或以太网连接。
  • JobInfo.NETWORK_TYPE_ANY:任何网络连接(WiFi 或蜂窝网络)。

现在,问题...没有 NETWORK_TYPE_CELLUAR。您不能让您的应用仅在在蜂窝移动网络上时唤醒。 (你为什么要这么做?)

另一个问题... WiFi 连接可以计量或不计量。计量连接通常是诸如移动热点之类的东西,这可以自动检测(热点可以发送一个特殊的 DHCP 选项),或者用户可以从 WiFi 设置中基于每个网络手动切换它。

所以,是的,您可以在 JobScheduler 作业上设置网络类型约束。但是,不,您没有得到您要求的粒度级别。

正如@CommonsWare 所提到的,这个想法是您通常希望在网络连接未计量时安排与网络相关的作业,除非您有充分的理由。 (使用 setRequiresCharging(true) 将作业推迟到交流电源可用也是一个好主意,以节省电池。)

关于android - 在 Android 中使用 JobScheduler 检测网络状态变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37217283/

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