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
}
并发生相同的问题:我的应用在第一次使用我的活动时无法显示。
如此简单的问题:“为什么?”
没有找到相关结果
已邀请:
0 个回复