最近、私は自分のプロジェクトで UIL のリリース 1.9.1 を使用していました。私のテスターは、アプリを初めて起動したときに画像が表示されなかったというフィードバックを繰り返し返しましたが、その後アプリを起動または終了したときには問題ありません。次に、ログを確認すると、logcat に「タスクが中断されました」と表示されます。そして、ソース コードで InterruptedException セグメントを見つけます。元のコードは次のとおりです。
/** @return true - if task should be interrupted; false - otherwise */
private boolean waitIfPaused() {
AtomicBoolean pause = engine.getPause();
synchronized (pause) {
if (pause.get()) {
log(LOG_WAITING_FOR_RESUME);
try {
pause.wait();
} catch (InterruptedException e) {
L.e(LOG_TASK_INTERRUPTED, memoryCacheKey);
return true;
}
log(LOG_RESUME_AFTER_PAUSE);
}
}
return checkTaskIsNotActual();
}
/** @return true - if task should be interrupted; false - otherwise */
private boolean delayIfNeed() {
if (options.shouldDelayBeforeLoading()) {
log(LOG_DELAY_BEFORE_LOADING, options.getDelayBeforeLoading(), memoryCacheKey);
try {
Thread.sleep(options.getDelayBeforeLoading());
} catch (InterruptedException e) {
L.e(LOG_TASK_INTERRUPTED, memoryCacheKey);
return true;
}
return checkTaskIsNotActual();
}
return false;
}
このコード セグメントは、com.nostra13.universalimageloader.coreのLoadAndDisplayImageTaskにあります。この例外は、インターネットのリンク速度が遅い、デバイスのメモリが少ない、CPU がビジー状態など、どのような状況でスローされるのでしょうか?