0

Cordova を使用してアプリを作成していますが、デバイスでの実行時にパフォーマンスに関する多くの問題が発生しています。このアプリは Backbone を使用して開発されており、ブラウザーでのパフォーマンスは非常に優れています。

私が解決したい主な問題は、異なるページ間での変更であり、アプリが最初に読み込まれるときに、ページが描画/再描画されているため、醜い「タイリング効果」があるようです。

異なるバックボーン ビュー間で変更するために使用しているコードは次のとおりです。

$('#app-view').empty();
$('#app-view').html($(view.el));

Cordova webview でパフォーマンスが向上するすべてのコンテンツを変更するより良い方法はありますか?

4

1 に答える 1

0

phonegap のパフォーマンスの問題は、実際には WebView がレンダリングする必要があるコンテンツの量に起因します。そこから、ios と android の 2 つのカテゴリに分類されます。

あなたのために、私は2つの提案があります:

提案#1:

iOS の Web ビューは通常、Android のビューよりも優れています。私はいくつかの基本的な HTML 駆動のアニメーションなどを備えた phonegap アプリをいくつか開発しました。

Android の場合、Android デバイスで重要なことは、コード レベルまたはアプリケーションの manifest.xml でハードウェア アクセラレーションを無効にすることです。

おかしく聞こえるかもしれませんが、実際に行うことは、Web ビューがより多くのハードウェア アクセラレーションを使用できるようにすることです。

私にとって、これは次のようになりました。

<application android:debuggable="true" android:hardwareAccelerated="false" android:icon="@drawable/icon" android:label="@string/app_name">

提案#2:

$('#app-view').empty(); を実行する代わりに $('#app-view').html($(view.el));

このようなことをすることは可能でしょうか:

$('#app-view1').css('display', 'none'); または $('#app-view1').remove();

次に、コンテンツの 2 番目のセットを表示するだけでフォローアップします。最初に完全にレンダリング/ダウンロードするのは IE です。$('#app-view1').css('display', 'block');

この 2 番目の提案の核心は、すべての html コンテンツを完全にリセットするのではなく、単純に 2 つのコンテンツの表示を切り替えることです。非表示の div にコンテンツを設定して、可視性を切り替えることもできます。

ハードウェア アクセラレーションの設定と組み合わせて変更すると、測定可能な違いが生じるはずです。

非表示の div に HTML をロードするのが早ければ早いほど、それを表示できるようになります。非表示の div に読み込まれると、html パーサーに解析やリソースのダウンロードなどの時間を与えます。

于 2014-07-10T18:08:45.657 に答える