GWT RunAsync-释放模式下的奇怪行为

| 正如这个问题中建议的那样,GWT-在使用场所/活动/映射器时应该在哪里使用代码拆分?,我创建了一个ActivityProxy来嵌套我的活动。 我的实现基于此http://code.google.com/p/google-web-toolkit/issues/detail?id=5129(第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使用生成器时,我又遇到了问题(避免为每个Activity编写提供程序)。合成音变成
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
}
并发生相同的问题:我的应用在第一次使用我的活动时无法显示。 如此简单的问题:“为什么?”     
已邀请:

要回复问题请先登录注册