在不使用任何图片加载库的情况下,我正在加载如下图片:
final Image img = new Image();
img.setVisible(false);
RootPanel.get().add(img);
img.addErrorHandler(new ErrorHandler() {
@Override
public void onError(ErrorEvent event) {
System.out.println(event);
}
});
img.addLoadHandler(new LoadHandler() {
@Override
public void onLoad(LoadEvent event) {
ImageElement data = ImageElement.as(img.getElement());
RootPanel.get().remove(img);
obj.setData(data);
System.out.println("Arrived:" + (System.currentTimeMillis()-startTime) + "ms");
render();
}
});
不使用 RootPanel.get().add(img); 图像永远不会添加到 DOM 中。所以不会触发onLoad。 但是当你将图像添加到 DOM 中时,如果你不删除它,这将是内存泄漏。
我对上述代码的观察:
- 如果我不将图像添加到 DOM,将不会触发加载处理程序。
- 如果我这样做了,但加载后不删除,就会发生内存泄漏。
- 我会,我会删除,Chrome 会在 256 MB 后调用垃圾回收。 Firefox 从不调用垃圾回收。于是发生了内存泄漏。可能是 Firefox 会在需要时调用垃圾收集器。我不太了解这个问题。
我的问题是,是否有图像加载程序(库)处理图像加载?
图像加载后,它们会自动从 DOM 中删除图像吗?
有没有更合适的方法来处理这个问题,你正在绘制很多图像但不需要绘制后的图像?
还有没有快速的方法可以将图像添加到 DOM 或从中删除图像?
最佳答案
要加载图像,请使用 com.google.gwt.widgetideas.graphics.client.ImageLoader
一次加载大量图像。
关于html - Canvas 的 GWT 图像加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5846982/