Pregunta

Sin usar ninguna biblioteca de carga de imágenes, estoy cargando imágenes como a continuación:

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

Sin usar rootpanel.get (). Add (img); La imagen nunca se agregará al DOM. Entonces Onload no se activará. Pero cuando agrega la imagen al DOM, si no la elimina, esta será una fuga de memoria.

Mis observaciones sobre el código anterior:

  1. Si no agrego la imagen al DOM, el controlador de carga no se activará.
  2. Si lo hago, pero no elimine después de cargar, se producirá una fuga de memoria.
  3. II, y elimino, Chrome llamará a la recolección de basura después de 256 MB. Firefox nunca llamó recolección de basura. Entonces ocurrió una fuga de memoria. Puede ser Firefox llamar a Garbage Collector cuando lo necesite. No sé tanto este problema.

Mis preguntas son, ¿hay procedimientos de carga de imágenes (bibliotecas) que manejan la carga de imágenes?
¿Eliminan automáticamente la imagen del DOM después de que se haya cargado la imagen?
¿Existe una forma más apropiada de manejar este problema en el que está dibujando muchas imágenes pero no requiere la imagen después del dibujo?
¿También hay enfoques rápidos para agregar y eliminar las imágenes hacia/desde el DOM?

¿Fue útil?

Solución

Para cargar imágenes, use el com.google.gwt.widgetideas.graphics.client.imageloader

Eso carga una gran cantidad de imágenes a la vez.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top