0

I made a class RefreshService that extends JobService, and in it I have a static method 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);
}

And in my android manifest I put this:

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

I have extended my class with JobService which has these overriden methods onStartJob and onStopJob, onStartJob method is not getting called.

Is there something I'm missing out?

Quorrin
  • 99
  • 1
  • 3
  • 10

1 Answers1

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

They are the same: the moment your job can be handled, it expires. Probably making OverrideDeadline twice as large will solve it.

Frank
  • 12,010
  • 8
  • 61
  • 78
  • My bad, it was supposed to by 10000L for the setOverrideDeadline. I'll edit my question. The problem still persists however – Quorrin Sep 01 '17 at 19:09
  • okay, I won't be able to help you then. I'm using FirebaseJobDispatcher, because I need to support older android versions – Frank Sep 04 '17 at 06:31