【问题标题】:Android JobScheduler does not start job when Wi-Fi network appears出现 Wi-Fi 网络时,Android JobScheduler 不启动作业
【发布时间】:2015-12-11 17:04:34
【问题描述】:

我正在尝试设置JobScheduler,以便通过 wi-fi 将一些图像上传到服务器。 这是我设置的:

    PersistableBundle params = new PersistableBundle();
    params.putString(UploadJobService.EXTRA_MEDIA, GsonFactory.getGson().toJson(mMedia));
    params.putString(UploadJobService.EXTRA_TEMP_ID, tempId);
    params.putInt(UploadJobService.EXTRA_IS_PUBLIC, mIsAlbumPublic.value());

    JobInfo.Builder builder = new JobInfo.Builder(JOB_ID, new ComponentName(this, UploadJobService.class));
    builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED);
    builder.setPersisted(true);
    builder.setExtras(params);
    builder.setOverrideDeadline(DateUtils.HOUR_IN_MILLIS);
    JobScheduler.getInstance(this).schedule(builder.build());

如果 wi-fi 网络可用,它可以很好地上传我的内容。但是如果我关闭它,强制安排服务,然后打开 wi-fi,它不会开始上传。

我做错了吗?或者JobScheduler 不是为了这个目的,我应该使用广播接收器来保证网络可用性? 谢谢。

【问题讨论】:

    标签: android android-jobscheduler


    【解决方案1】:

    也许您在此期间确实找到了解决方案,但也许这个答案对任何人都有帮助。

    我遇到了和你一样的问题,我认为要重新安排工作,你必须指定

    builder.setBackoffCriteria(long initialBackoffMillis, int backoffPolicy)
    

    当我使用它时,由于网络关闭而没有运行的作业,将在网络再次打开后的初始BackoffMillis 周期之后重新运行。 我对此并不完全满意,因为我希望在网络再次打开后立即运行该作业,并且 - 此外 - 第一次尝试运行作业时,它还使用 initialBackoffMillis 延迟。 但至少这是一个起点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-04
      • 1970-01-01
      相关资源
      最近更新 更多