Android JobScheduler在Wi-Fi网络出现时无法启动作业

3

我正在尝试设置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,强制服务被安排,然后打开Wi-Fi,它不会开始上传。
我做错了什么吗?还是JobScheduler不适用于此目的,我应该使用网络可用性广播接收器?
谢谢。
1个回答

0
也许你已经在这段时间找到了解决方案,但或许这个答案可以帮助其他人。
我和你一样遇到了同样的问题,我认为要重新安排工作,你必须指定。
builder.setBackoffCriteria(long initialBackoffMillis, int backoffPolicy)

当我使用它时,因为网络关闭而未运行的工作将在网络再次打开后的initialBackoffMillis时间段后重新运行。 我对此并不完全满意,因为我希望工作在网络再次打开后立即运行,并且首次尝试运行作业时也使用initialBackoffMillis延迟。 但至少这是一个起点。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接