@Override
 public void onNewResultImpl(EncodedImage newResult, boolean isLast) {
   if (isLast && !EncodedImage.isValid(newResult)) {
     handleError(new NullPointerException("Encoded image is not valid."));
     return;
   }
   if (!updateDecodeJob(newResult, isLast)) {
     return;
   }
   if (isLast || mProducerContext.isIntermediateResultExpected()) {
     mJobScheduler.scheduleJob();
   }
 }