MediaTracker - как его использовать, каковы преимущества или есть ли альтернативный вариант?

В унаследованной нами кодовой базе использование 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 вопроса:

  1. Как и зачем использовать MediaTracker?

  2. Какая альтернатива?

6
задан Charles Goodwin 10 September 2011 в 22:31
поделиться