私の目標は、UI の大部分を HTML サーバー側で定義できるようにすることですが、それでも Google Cloud Messaging などの多くのネイティブ機能を利用できるようにすることです。
具体的には、GCM メッセージを受信したら、UI のリストから要素を追加または削除する必要があります。Element は単なるテキストではなく、完全なインタラクティブ ウィジェットであり、サーバーとの単純な AJAXy 通信を伴いますが、それ自体をリロードする必要はありません (つまり、閲覧可能な Web ページを意図したものではありません)。これには 2 つの明らかなオプションがあります。
- 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 を持つことができ、1 つの GCM 呼び出しが他の要素に影響を与えるという懸念はありません。私の考えでは、ListView の組み込みロジックの恩恵を受けることができるため、これはより単純で、エラーが発生しにくいものです。
要素の追加と削除をすべて自分で管理する必要があるため、ネイティブから JavaScript への明示的な呼び出しを含む WebView はエラーが発生しやすいのではないかと懸念しています。利点は、ページ全体の更新を比較的簡単にトリガーできることです。
推奨事項やその他のオプションはありますか?