GWT RunAsync-发布模式下的奇怪行为

GWT RunAsync-发布模式下的奇怪行为,gwt,asynchronous,gwt-mvp,Gwt,Asynchronous,Gwt Mvp,正如在这个问题中所建议的,我创建了一个ActivityProxy来嵌套我的活动 我的实现基于此(第6条注释),只做了一个修改:在调用GWT.RunAsync之前,我在提供程序上添加了一个检查: if (provider != null) { GWT.runAsync(new RunAsyncCallback() { @Override public void onFailure(Throwable reason) {

正如在这个问题中所建议的,我创建了一个ActivityProxy来嵌套我的活动

我的实现基于此(第6条注释),只做了一个修改:在调用GWT.RunAsync之前,我在提供程序上添加了一个检查:

if (provider != null)
{
    GWT.runAsync(new RunAsyncCallback()
    {
        @Override
        public void onFailure(Throwable reason)
        {
            // ...
        }

        @Override
        public void onSuccess()
        {
            ActivityProxy.this.nestedActivity = provider.create();
            //...
        }
    });
}
但由于某些原因,这在发布模式下不起作用:onFailure方法从未被调用,但我的活动在我第一次使用它时从未显示。如果我重新加载这个地方,一切都会显示得很好

然后我意识到,执行以下操作可以解决问题:

GWT.runAsync(new RunAsyncCallback()
{
    @Override
    public void onFailure(Throwable reason)
    {
        // ...
    }

    @Override
    public void onSuccess()
    {
        if (provider != null)
        {
            ActivityProxy.this.nestedActivity = provider.create();
            //...
        }
    }
});
所以,即使我不明白它为什么有效,我也开始在我的所有活动中使用它

当我决定为我的ActivityProxy使用生成器(避免为每个活动编写提供程序)时,我又遇到了这个问题。synthax变成
GWT.create(ActivityProxy).wrap(MyActivity.class)

基本上,生成的代码如下所示:

if (clazz.getName() == "FooClass")
{
    nestedActivity = new FooClass(); //inside a RunAsync
}
if (clazz.getName() == "BarClass")
{
    nestedActivity = new BarClass(); //inside a RunAsync
}
同样的问题也出现了:我的应用程序在第一次使用时无法显示我的活动

这么简单的问题:“为什么?”