我很好奇。我有这样的代码:
button_article.addClickListener(new ClickListener(){
public void onClick(Widget w) {
GWT.runAsync(new RunAsyncCallback() {
public void onFailure(Throwable reason) {
// somethings
}
public void onSuccess() {
content.clear();
content.designArticles();
}
});
}
});
public final void designArticles() {
this.add(new ProfileArticles(this.rpcService, this));
}
我看到,直到我点击button_article,当我启动应用程序时,没有加载ProfileArticles()(即FlowPanel)上的元素。那么,当应用程序启动时,GWT如何知道该类上的元素不应该加载?它检查GWT.runAsync()下的每个方法及其通讯员Class?
我也看到当我离开那个“上下文”时他们没有被释放(事实上,如果我改变上下文并且我返回那里,当我再次点击该方法时它不会调用服务器。所以它使用之前加载的代码)。这样对吗? :)
干杯
答案 0 :(得分:2)
GWT编译器分析程序的流程,以确定它稍后可以加载的块。如果您想直观地了解它的作用,请查看http://code.google.com/webtoolkit/doc/latest/DevGuideCompileReport.html。
加载代码后,大部分代码都可以缓存,因此即使用户离开页面然后返回到您的代码,代码也不需要重新加载。