用于Android的GWT / GAE离线应用程序 - 高级

时间:2013-02-07 12:54:02

标签: java google-app-engine gwt cordova html5-appcache

大家好,这里有很多关于gwt离线可能性的帖子。但他们都没有完全回答我的问题。

这里只是一些摘录:

我使用的GWT,GAE和Android技术的摘录:

  • RequestFactories
  • RPC请求
  • JDO
  • 科尔多瓦/ PhoneGap的
  • localStorage的
  • html5 appcache

那么我现在的问题是什么?

  • 当我启动我的应用程序没有互联网连接时,它不会加载任何东西。我收到错误500,因为没有互联网连接。
  • 它不会从离线缓存中加载HTML,CSS和JavaScript。

我现在是因为我的webapp试图连接到www.mypage.com,并且没有得到任何回复。

我可以从我的Android设备上的本地资源启动我的页面,如果我在线的话,从我的服务器获取响应,如果我没有任何连接,可以从本地存储获得响应吗?

我尝试使用本地资源(编译的HTML,CSS和JavaScripts)实现它,但在这种情况下,它不会随时连接到谷歌应用引擎的日期。显而易见的结果是:无数据。

1 个答案:

答案 0 :(得分:0)

是的,如果您没有连接,您可以从本地存储获得响应。绝对

在扩展com.google.gwt.core.ext.linker.AbstractLinker的链接器中,遍历工件并检查它是否是rpc代码(1)。如果是,则将其添加到清单(2)的网络部分。

然后在你的rpc回调中(由于没有网络将会失败),设置你的@Override public void onFailure(Throwable caught) { ...}方法从本地存储中获取数据并从那里继续。

(1)示例 -

private boolean isRPRCall(EmittedArtifact artifact) {
        return (artifact.getPartialPath().substring(artifact.getPartialPath().length() - 3)).equals("rpc");
    }

(2)我看起来像:

CACHE MANIFEST
file.jsp
/myapp/myapp.nocache.js
[etc. etc...]

NETWORK:
/myapp/34C9362A2B2ED625B4FE3FF8E80A4A60.gwt.rpc
/myapp/586D3102158048D2D56BA386A134648D.gwt.rpc
/myapp/CCA65B31464BDB27545C23C142FEEEF8.gwt.rpc
FALLBACK: