gpt4 book ai didi

java - MediaTracker - 如何使用它,有什么好处,或者有替代品吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:56:54 27 4
gpt4 key购买 nike

在代码库中我们继承了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),constructor documentation 强烈暗示要采用这种方法。 .

所以我有两个问题:

  1. 如何以及为何使用 MediaTracker?

  2. 还有什么选择?

最佳答案

MediaTracker 在 1995 年很有用。当时 Java 的主要 GUI 使用是 Applets,而 Applets 通常会通过网络缓慢加载图像。

为了让 Applet 编写者更容易,java 为我们提供了一个很好的 MediaTracker api,它可以在后台下载图像,跟踪它们何时完成,甚至在图像为 partially loaded 时发出通知。 . MediaTracker API 意味着 Applet 编写者不必在图像缓慢下载时阻止应用程序,也不必编写复杂的线程代码来在后台线程中加载图像。

现在您通常可以同步加载图像,最好使用 ImageIO .对于从本地文件系统加载图像的常见情况尤其如此。

关于java - MediaTracker - 如何使用它,有什么好处,或者有替代品吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7045214/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com