我做了一个扩展JobService的类RefreshService,其中我有一个静态方法scheduleJob((:
public static void scheduleJob(final Context context) {
final JobScheduler jobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
final ComponentName refreshService = new ComponentName(context, RefreshService.class);
final JobInfo.Builder jobBuilder = new JobInfo.Builder(1002, refreshService);
jobBuilder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);
jobBuilder.setRequiresDeviceIdle(false);
jobBuilder.setRequiresCharging(false);
jobBuilder.setMinimumLatency(5000L);
jobBuilder.setOverrideDeadline(10000L);
final JobInfo job = jobBuilder.build();
jobScheduler.schedule(job);
}
在我的安卓清单中,我把这个放进去:
<service
android:name="<my full package path>.RefreshService"
android:permission="android.permission.BIND_JOB_SERVICE"
android:exported="true" />
我已经用JobService扩展了我的类,它有这些覆盖的方法在StartJob和onStopJob,onStartJob方法没有被调用。
我错过了什么吗?
jobBuilder.setMinimumLatency(5000L);
jobBuilder.setOverrideDeadline(5000L); // same value = expires right away?
它们是相同的:您的作业可以处理的那一刻,它就会过期。可能将OverrideDeadline放大两倍就可以解决这个问题。