1

我在我的应用程序中使用 GWT。对于缓存图片,我使用带有 ImageResource 的 ClientBundle。我有很多这样的 ClientBundle:

public interface MenuBundle extends ClientBundle { 

  @Source(background.png) 
  ImageResource background();

  @Source(image_bg.png) 
  ImageResource image_bg();

...

}

以及数百个具有相同方法的 ClientBundle,如下所示:

    public interface House1 extends House, ClientBundle { 

      @Source(house1/pic1.png) 
      ImageResource pic1();

      @Source(house1/pic2.png) 
      ImageResource pic2();

      @Source(house1/pic3.png) 
      ImageResource pic3();

    ...

    }

    public interface House2 extends House, ClientBundle{ 

      @Source(house2/pic1.png) 
      ImageResource pic1();

      @Source(house2/pic2.png) 
      ImageResource pic2();

      @Source(house2/pic3.png) 
      ImageResource pic3();

    ...

    }

   public interface House { 

      ImageResource pic1();

      ImageResource pic2();    

      ImageResource pic3();

    ...

    }

结果,我在服务器上有数百张图片,例如“* .cache.png”。为了快速加载,我需要更少的图片。为此,我找到了决定:

public class ClientBundleModule extends AbstractGinModule {

 @Override
 protected void configure() {
  bind(MenuBundle.class).to(ClientBundlePack1.class);
  bind(NatureFuture.class).to(ClientBundlePack1.class);
  ...
  bind(House1.class).to(ClientBundlePack2.class);
  bind(House2.class).to(ClientBundlePack2.class);
  bind(House3.class).to(ClientBundlePack2.class);
  ...
 }
}

public interface ClientBundlePack1 extends MenuBundle, NatureFuture, ... {
}

public interface ClientBundlePack2 extends House1, House2, House3, ... {
}

还有Ginjector,......但问题是:

ClientBundlePack1中的MenuBundle、NatureFuture等类编译成一张大图(好),但是House1、House2、House3等House没有编译成一张大图(不好)。

房屋将每个班级房屋编译在一张图片中。我在扩展实现的 java 方式中看到了问题,只使用一种像 pic1 一样的方法,而不是使用所有方法 pic1。

但我需要在一张照片中加入所有房屋。GIN 有设置、注释可以做到这一点。或者有没有其他方法可以加入所有的房子?但是我不能重写 Houses 的代码,它会破坏我的应用程序的架构。我需要在预加载后立即所有房屋,而不是“延迟加载”。

谢谢。

4

0 回答 0