0

我创建了一个扩展 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);
}

在我的android清单中,我放了这个:

    <service
        android:name="<my full package path>.RefreshService"
        android:permission="android.permission.BIND_JOB_SERVICE"
        android:exported="true" />

我已经用 JobService 扩展了我的类,它具有这些覆盖方法 onStartJob 和 onStopJob,onStartJob 方法没有被调用。

有什么我错过的吗?

4

1 回答 1

0
jobBuilder.setMinimumLatency(5000L);
jobBuilder.setOverrideDeadline(5000L); // same value = expires right away?

它们是相同的:一旦您的工作可以处理,它就会过期。可能使 OverrideDeadline 大两倍可以解决它。

于 2017-08-31T12:07:55.010 回答