code: public final void jobFinished(JobParameters params, boolean needsReschedule) {
          ensureHandler();
          Message m = Message.obtain(mHandler, MSG_JOB_FINISHED, params);
          m.arg2 = needsReschedule ? 1 : 0;
          m.sendToTarget();
      }
docs: Callback to inform the JobManager you've finished executing. This can be called from any
  thread, as it will ultimately be run on your application's main thread. When the system
  receives this message it will release the wakelock being held.
  <p>
  You can specify post-execution behaviour to the scheduler here with
  <code>needsReschedule </code>. This will apply a back-off timer to your job based on
  the default, or what was set with
  {@link android.app.job.JobInfo.Builder#setBackoffCriteria(long, int)}. The original
  requirements are always honoured even for a backed-off job. Note that a job running in
  idle mode will not be backed-off. Instead what will happen is the job will be re-added
  to the queue and re-executed within a future idle maintenance window.
  </p>
  
  @param params          Parameters specifying system-provided info about this job, this was given to
  your application in {@link #onStartJob(JobParameters)}.
  @param needsReschedule True if this job should be rescheduled according to the back-off
  criteria specified at schedule-time. False otherwise.