MediaTracker - how to use it, what are the benefits, or is there an alterative?

爱⌒轻易说出口 提交于 2020-01-19 12:55:22

问题


In the codebase we inherited the usage of MediaTracker was always done locally in each code block.

new MediaTracker(new Canvas());
mediatracker.addImage(i, 1);
try {
    mediatracker.waitForAll();
} catch (InterruptedException e) { }
mediatracker.removeImage(i);

Deciding this was inefficient, I eventually replaced it with a static instance and method:

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);
}

Thus far there have been no ill effects.

There is another possible approach - to attach the MediaTracker to each component (usually a Frame or JFrame) which is strongly implied as the approach to take by the constructor documentation.

So I have 2 questions:

  1. How and why to use MediaTracker?

  2. What is the alternative?


回答1:


MediaTracker was useful in 1995. Back then the primary GUI use of java was Applets, and Applets would usually load images slowly over the network.

To make it easier for Applet writers, java gave us a nice MediaTracker api which would download images in the background, tracking when they were done, and even give notifications when images were partially loaded. The MediaTracker API meant Applet writers didn't have to block the application while images slowly downloaded, and didn't have to write complicated threading code to load images in background threads.

These days you can typically load images synchronously, and it is best to use ImageIO. This is especially true for the common case where images are loaded from the local file system.




回答2:


MediaTracker

?

Join us in the 3rd millennium and use ImageIO.read(File/URL/InputStream). In our millennium, MediaTracker is irrelevant.



来源:https://stackoverflow.com/questions/7045214/mediatracker-how-to-use-it-what-are-the-benefits-or-is-there-an-alterative

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!