1

我的目标是能够通过 HTML 服务器端定义我的大部分 UI,同时仍然利用许多原生功能,例如 Google Cloud Messaging。

具体来说,在收到 GCM 消息后,我需要在 UI 的列表中添加或删除元素。Element 将是一个完整的交互式小部件,而不仅仅是一些文本,并且将涉及与服务器的简单 AJAXy 通信,但它本身永远不需要重新加载(即它不打算成为一个可浏览的网页)。我可以看到两个明显的选择:

  • 使用 ListView,并让每个元素都是固定高度的 WebView,没有滚动,并使用 WebView.loadDataWithBaseURL() 插入来自 GCM 有效负载的 HTML。
  • 使用 WebView 并在 HTML/css/js 中构建列表和完整的 UI 行为,使用 WebView.loadUrl() 加载它,然后每次收到 GCM 消息时,调用 WebView.loadUrl("javascript:myUpdateFunction(\"" +data-to-display+"\")" 从 GCM 有效负载中传递 JSON 数据。

我担心具有许多 WebView 的 ListView 会太慢。从好的方面来说,每个 WebView 都可以有自己的 HTML,并且不必担心一个 GCM 调用会影响其他元素。在我看来,这更简单,更不容易出错,因为我可以从 ListView 的内置逻辑中受益。

我担心从本机到 JavaScript 的显式调用的 WebView 容易出错,因为我需要自己管理所有元素的添加和删除。从好的方面来说,我可以相对轻松地触发整个页面的刷新。

有什么建议或其他选择吗?

4

0 回答 0