使用Gin和AsyncProvider的ActivityMapper

4

我刚刚开始一个使用新的GWT原型构建的项目。

ActivityMapper看起来像这样:

public interface Factory {
    HomeActivity homeActivity();

    GreetingActivity greetingActivity(String user);
}

private final Factory factory;

@Inject
MainActivityMapper(Factory factory) {
    this.factory = factory;
}

@Override
public Activity getActivity(Place place) {
    if (place instanceof HomePlace) {
        return factory.homeActivity();
    }
    if (place instanceof GreetingPlace) {
        GreetingPlace greetingPlace = (GreetingPlace) place;
        return factory.greetingActivity(greetingPlace.getUser());
    }
    logger.severe("Unhandled place type: " + place.getClass().getName());
    return null;
}

我现在正在尝试使用 AsyncProvider 实现代码分离,参考这个例子,但是无法使其工作。

当使用 ActivityAsyncProxy 时,我该怎么做?从 getActivity(Place place) 返回 ActivityAsyncProxy 吗?但那样的话,我如何从工厂中创建 ActivityAsyncProxy 呢?

您建议怎样让 activity mapper 和代码拆分协同工作呢?

1个回答

3
据我所知,您无法在带助手注入的情况下使用AsyncProvider(这将是GIN的一个很好的补充)。这意味着您无法从生成的runAsync调用中受益,您必须自己执行它们。
请参阅http://code.google.com/p/google-web-toolkit/issues/detail?id=5129以了解此问题的讨论,并提出了几个建议。
还要看看https://groups.google.com/d/msg/google-web-toolkit-contributors/bUFYWEFskBI/ja2aJ0tBgdwJ以获取我的观点(也可在https://gist.github.com/3038878上找到)。

谢谢提供代码示例,Thomas。您能否请澄清一下我应该在void doAsync(RunAsyncCallback callback)和Activity createInstance()中实现什么?有点混淆,我可以使用GIN来实现createInstance(),并使用AsyncProvider来实现doAsync()吗? - Gal Bracha
我刚刚在Gist中添加了一条注释,其中包含了一个使用示例。 - Thomas Broyer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接