質問

画像読み込みライブラリを使用せずに、以下のような画像をロードしています。

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に追加されることはありません。したがって、オンロードはトリガーされません。ただし、画像をDOMに追加すると、削除しない場合、これはメモリリークになります。

上記のコードに関する私の観察:

  1. 画像をDOMに追加しないと、ロードハンドラーはトリガーされません。
  2. 私がそうする場合、ただしロード後に削除しないでください、メモリリークが発生します。
  3. ii do、そして私は削除します、Chromeは256 MBの後にガベージコレクションを呼び出します。 Firefoxはガベージコレクションと呼ばれることはありませんでした。そのため、メモリリークが発生しました。 Firefoxが必要なときにGarbage Collectorを呼び出す可能性があります。私はこの問題をそれほど知りません。

私の質問は、画像の読み込み手順(ライブラリ)が画像の読み込みを処理することはありますか?
画像がロードされた後、DOMから画像を自動的に削除しますか?
多くの画像を描いているが、描画後に画像を必要としないこの問題を処理するためのより適切な方法はありますか?
また、DOMに画像を追加および削除するための高速なアプローチはありますか?

役に立ちましたか?

解決

画像をロードするには、com.google.gwt.widgetideas.graphics.client.imageloaderを使用します

一度に大量の画像がロードされます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top