请考虑以下代码:
private boolean waitIfPaused() {
AtomicBoolean pause = engine.getPause();
if (pause.get()) {
synchronized (engine.getPauseLock()) {
if (pause.get()) {
L.d(LOG_WAITING_FOR_RESUME, memoryCacheKey);
try {
engine.getPauseLock().wait(); //here
} catch (InterruptedException e) {
L.e(LOG_TASK_INTERRUPTED, memoryCacheKey);
return true;
}
L.d(LOG_RESUME_AFTER_PAUSE, memoryCacheKey);
}
}
}
return isTaskNotActual();
}
来自Android Studio的Findbugs插件抱怨这种方法的第七行,它说:
等待不循环 此方法包含对java.lang.Object.wait()的调用,该调用不在循环中。如果监视器用于多个条件,则调用者打算等待的条件可能不是实际发生的条件。
有人知道我该如何解决这个问题?