我尝试设置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
不是为了这个目的,我应该使用广播接收器来获得网络可用性?
感谢。
答案 0 :(得分:0)
也许你确实在此期间找到了解决方案,但也许这个答案对任何人都有帮助。
我遇到了和你一样的问题,并认为为了重新安排工作,你必须指定
builder.setBackoffCriteria(long initialBackoffMillis, int backoffPolicy)
当我使用它时,由于关闭网络而未运行的作业将在网络再次打开后的initialBackoffMillis-period之后重新运行。 我对此并不满意,因为我希望在再次打开网络后立即运行该作业,并且 - 此外 - 第一次尝试运行作业时,它还会使用initialBackoffMillis延迟。 但至少这是一个重要的开始。