html - Canvas 的 GWT 图像加载

标签 html gwt canvas image-loading

在不使用任何图片加载库的情况下,我正在加载如下图片:

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 中时,如果你不删除它,这将是内存泄漏。

我对上述代码的观察:

  1. 如果我不将图像添加到 DOM,将不会触发加载处理程序。
  2. 如果我这样做了,但加载后不删除,就会发生内存泄漏。
  3. 我会,我会删除,Chrome 会在 256 MB 后调用垃圾回收。 Firefox 从不调用垃圾回收。于是发生了内存泄漏。可能是 Firefox 会在需要时调用垃圾收集器。我不太了解这个问题。

我的问题是,是否有图像加载程序(库)处理图像加载?
图像加载后,它们会自动从 DOM 中删除图像吗?
有没有更合适的方法来处理这个问题,你正在绘制很多图像但不需要绘制后的图像?
还有没有快速的方法可以将图像添加到 DOM 或从中删除图像?

最佳答案

要加载图像,请使用 com.google.gwt.widgetideas.graphics.client.ImageLoader

一次加载大量图像。

关于html - Canvas 的 GWT 图像加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5846982/

相关文章:

android - 网站无法在手机屏幕上全屏显示

GWT 动态语言环境

java - SmartGWT 中的 addMembers(...) 和 setMembers(...) 有什么区别

javascript - 使用 Canvas 单独倾斜图像

java - 在Java中添加canvas后无法关闭窗口

css - HTML5 & CSS 媒体属性媒体查询问题

javascript - 如何从数据库中获取当前日期到最近 5 天的值

javascript - 更改 Canvas 中描边的颜色

html - 重叠的导航栏 css

image - 在 GWT 中,为什么 image.setURL ("/SimpleCaptcha.jpg") 刷新图像在 Firefox 中不起作用?