如何解决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
}
并发生相同的问题:我的应用在第一次使用我的活动时无法显示。
如此简单的问题:“为什么?”
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。