@Override public boolean isCanceled() { if (super.isCanceled()) { return true; } if (job.shouldReschedule() && job.isBlocking()) { if (blockTime == 0) { blockTime = System.currentTimeMillis(); } else if (System.currentTimeMillis() - blockTime > THRESHOLD) { // We've been blocking for too long wasBlocking = true; return true; } } else { blockTime = 0; } wasBlocking = false; return false; }