6

私たちは、Phonegap を利用してアプリケーションとしてインストールし、デバイスのストレージにアクセスできる Sencha Touch 2 アプリケーションを開発しています。これは、iPad 2 および iPad 3 で非常にうまく機能します。しかし、Android デバイスでアプリケーションを実行しようとすると、パフォーマンスが非常に遅くなりました。システムの速度を低下させた主な要素は、リストとカルーセルでした。Chrome ブラウザーで同じアプリケーションをテストしようとしたところ、パフォーマンスは iPad と同等でした。

Android でのパフォーマンスを向上させるためにできることについて何か提案はありますか。または、phonegap を強制的に Chrome ブラウザーとして実行できる場合。

お時間とご協力ありがとうございます。

4

3 に答える 3

12

ここでの問題は、Android ブラウザがグラフィック ハードウェア アクセラレーションを使用していないことです。これは、Sencha (および jQueryMobile、iScroll などの他の HTML5 ライブラリ) が優れたスクロール パフォーマンスを提供するために使用する標準的なトリックを意味します。たとえば、CSS 3D 変換を使用して、リストを別のレイヤーにレンダリングします。その後、ハードウェアで変換されますが、Android では動作しません。代わりに、リストのスクロールは完全にソフトウェアで実行されるため、遅くなります!

ただし、Chrome ブラウザーは GPU アクセラレーションを提供します。Android デバイスは、優れた HTML5 エクスペリエンスを提供する以上の能力を備えていますが、それは単純に、標準のブラウザーがまだ GPU ハードウェアを利用していないということです。

エンド ユーザーに Chrome の使用を強制できない限り (私には疑問です)、唯一の選択肢は、ユーザー エクスペリエンスを低下させ、Android ユーザー向けに少しシンプルな UI を提供することです。

詳細については、「HTML5 アプリのパフォーマンスを改善する」を参照してください。

于 2012-07-12T11:06:11.110 に答える
0

更新: ST2 をより長く使用するようになった今、Android でのパフォーマンスの課題は、受け入れなければならないものにすぎません。パフォーマンスの問題を回避するためにできることはたくさんあります。たとえば、リスナーとイベントを減らす、DOM を軽量に保つ (2000 ノード未満)、一般的に CSS3 の変換と効果を避ける (これらは特に Android ではうまく機能しません)。

考慮すべきもう 1 つの点は、組み込みの WebView を使用するのではなく、CrossWalk ブラウザーを使用して、これを APK に埋め込むことです。

https://crosswalk-project.org

APK のサイズが少し大きくなります (15 ~ 20 MB) が、組み込みの WebView よりも優れたパフォーマンスを発揮し、非常に断片化されたプラットフォームに安定性と一貫性をもたらします。Android のすべての WebView は、デバイス、ベンダー、および OS のバージョンによって、わずかに異なる可能性があるという現実を考慮してください。CrossWalk を使用すると、すべての Android 4.0 以降のデバイスでまったく同じバージョンを使用し、デバイスまたはベンダー固有の問題を取り除くことができます。

Android でのパフォーマンスに特効薬はありません。グラフィック アクセラレーションは、純粋な JavaScript の実行や DOM 操作のパフォーマンスを改善しません。理由を理解したい場合は、ここから始めてください。

リフローとリペイントの違いは何ですか?

古い回答(まだ有効かもしれません):

ICS 以上の場合、webview で次の設定を行うと、Android での Sencha Touch のレンダリング パフォーマンスが大幅に向上します。

mWebView.setLayerType(WebView.LAYER_TYPE_HARDWARE, null);

ただし、私の経験では、これにより、デバイスとプラットフォームのバリエーションに応じて、CSS レンダリングにアーティファクトが導入されます。この理由を具体的に見つけていません。また、Android 4.4 で webview コンポーネントがより新しく、より優れたバージョンに置き換えられるため、Google がこの問題を解決するとは思いません。

https://developers.google.com/chrome/mobile/docs/webview/overview

于 2014-03-13T15:29:59.577 に答える
0

AndroidManifest.xml でこのフラグを設定してみてください: android:hardwareAccelerated="true"

于 2012-07-12T11:08:03.817 に答える