@WorkerThread
  private void handleStartJobRequestImpl(final JobParameters job, IJobCallback callback) {
    synchronized (runningJobs) {
      if (runningJobs.containsKey(job.getTag())) {
        Log.w(
            TAG, String.format(Locale.US, "Job with tag = %s was already running.", job.getTag()));
        return;
      }
      runningJobs.put(job.getTag(), new JobCallback(job, callback, SystemClock.elapsedRealtime()));
    }

    // onStartJob needs to be called on the main thread
    mainHandler.post(UnitOfWork.callOnStartJob(this, job));
  }
Records that the provided {@code job} has been started, then arranges for {@link
#onStartJob(JobParameters)} to be called on the main thread (via {@link
#callOnStartJobImpl(JobParameters)}.
jobdispatcher/src/main/java/com/firebase/jobdispatcher/JobService.java