【问题标题】:Android N: dealing with lack of CONNECTIVITY_CHANGEAndroid N:处理缺少 CONNECTIVITY_CHANGE
【发布时间】:2016-11-20 19:32:06
【问题描述】:

我的AppWidgetProvider(当然是BroadcastReceiver)已注册接收CONNECTIVITY_CHANGE,这样我就可以在网络恢复后立即更新小部件(尽管仅在需要时,即如果以前的更新是由于缺乏连接而错过)。

但正如 here 所述,这在 Android N 中将不再可能。建议使用 JobScheduler,它允许您指定作业仅在通过.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY) 方法。

但是,我看不出如何使用它来复制我想要的行为。在我看来,.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY) 方法会导致 Job 根本不运行,如果在调度 Job 时没有网络,它会 > 让 Job 耐心等待,直到有网络然后运行(这是我需要的)。

那么,如何使用 Android N 保留我需要的行为?

【问题讨论】:

    标签: android android-7.0-nougat android-jobscheduler


    【解决方案1】:

    我正在使用作业调度程序,它不依赖于调度作业时网络是否可用。它提供了某些条件,当满足这些条件时,作业就会被安排。您可以设置重复性作业,还可以指定作业之间的最小时间间隔。例如,每当我将手机连接到充电 PlayStore 时,就会开始更新应用程序,因为 Job 有充电限制。

    如果您安排了一个作业并且不满足条件,它将在网络可用时安排。尝试断开网络并在 Facebook 上打开某人的个人资料。它会要求您加载有关网络可用性的配置文件。现在,连接到网络,您将在配置文件加载后收到通知。

    【讨论】:

    • 您也可以根据需要使用 firebase 调度程序。它向后兼容。
    • 您还可以在设备重启后保留作业。
    【解决方案2】:

    尝试添加 google ping 以进行网络更改,这将帮助您 网络变化和所有原因我在开发时遇到同样的问题 与套接字服务。所以也许它也会对你有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-15
      • 2014-12-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多