В кодовой базе, которую мы унаследовали, использование MediaTracker всегда выполнялось локально в каждом блоке кода.
new MediaTracker(new Canvas());
mediatracker.addImage(i, 1);
try {
mediatracker.waitForAll();
} catch (InterruptedException e) { }
mediatracker.removeImage(i);
Решив, что это неэффективно, я в итоге заменил его статическим экземпляром иМетод:
final static protected MediaTracker mediatracker = new MediaTracker(new Canvas());
static protected void checkImageIsReady(Image i) {
mediatracker.addImage(i, 1);
try {
mediatracker.waitForAll();
} catch (InterruptedException e) { }
mediatracker.removeImage(i);
}
До сих пор не было никаких побочных эффектов.
Существует еще один возможный подход - прикрепить MediaTracker к каждому компоненту (обычно это Frame или JFrame), что явно подразумевается.как подход к документации конструктора .
Итак, у меня есть 2 вопроса:
Как и почему использовать MediaTracker?
Какая альтернатива?