こんにちは、スマートフォンとデスクトップ ブラウザの両方で同じように実行できる Webapp があります。Iphone のような小さなデバイスで奇妙な動作が得られることを期待していましたが、現時点でテストを実行できる Android デバイスである Android Galaxy Tab でうまく動作すると確信していました。
これで、Galaxy Tab に一連のブラウザをインストールして、次のことをテストしました。
- Android ネイティブ ブラウザ
- Android 用 Chrome
- Android 版 Firefox
私が使用したデスクトップで
- ファイアフォックス
- グーグルクローム
最後に、テストする Iphone を用意しました。
Web サイトでは、ピクセルおよびスプライト ベースの描画に HTML5 キャンバスを使用しており、手の込んだ変換、フィルター、または効果はなく、ほとんどが単純なパスとポリゴンです。私はタッチイベントをリッスンしrequestAnimationFrame
、適切な再描画に使用します。
全体として、このアプリケーションはデスクトップ ブラウザで問題なく動作します。また、iOS Safari (iPhone) および Firefox-on-Android でも問題なく動作します。しかし、Android のネイティブ ブラウザが問題を引き起こしています。JavaScriptが応答しないときに画面が赤くフラッシュするように設定しました。画面に触れると、ほとんど常にフラッシュします。
そこで、Android Native App と HTML5 に既知の問題があるかどうか疑問に思います。ネイティブ ブラウザの名前が存在しないため、これに関する情報をグーグルで検索するのは非常に困難です。より多くの情報を入手できるアイデアはありますか? ネイティブ Android ブラウザの遅延の原因となる可能性のあるアイデアはありますか?
この問題についていくつかのアイデアがあります。
iOS は requestAnimationFrame をサポートしていないため、タイムアウト ベースの置換に置き換えました。その代わりに Android のネイティブ ブラウザを使用しても、問題は解決しません。
私は AJAX (google clojure xhrio) を定期的に使用して、サーバーからデータを取得しています。データ取得コールバックがイベント パイプラインを詰まらせている可能性はありますか?
ログ コンソール メッセージ (console.log) は、アプリケーションの速度を低下させることが知られていますか? ブラウザーが DOM ツリーまたは関連するものを再実行するようにトリガーできますか?