synchronized boolean startJob(JobInvocation jobInvocation) {
    if (wasUnbound()) {
      requestRetryForJob(jobInvocation);
    }

    boolean connected = isConnected();
    if (connected) {
      // Need to stop running job
      Boolean isRunning = jobStatuses.get(jobInvocation);
      if (Boolean.TRUE.equals(isRunning)) {
        Log.w(TAG, "Received an execution request for already running job " + jobInvocation);
        stopJob(/* Do not send result because it is new execution request. */ false, jobInvocation);
      }
      try {
        binder.start(encodeJob(jobInvocation), callback);
      } catch (RemoteException e) {
        Log.e(TAG, "Failed to start the job " + jobInvocation, e);
        unbind();
        return false;
      }
    }
    jobStatuses.put(jobInvocation, connected);
    return connected;
  }
Returns {@code true} if the job was started.
jobdispatcher/src/main/java/com/firebase/jobdispatcher/JobServiceConnection.java