2012-08-28 25 views
20

私は、PhoneGapの下のアンドロイドと、ブラウザの下に同じ正確なWebアプリケーションを実行しています。このアプリは内蔵ブラウザで正常に動作しますが、PhoneGapの下では信じられないほど遅くなります。ページの基本的なスクロールでも、PhoneGapの下ではじまります。PhoneGapがブラウザより遅いのはなぜですか?

私は間違っている可能性がありますか?私はPhoneGapが通常のブラウザアプリと同じWebKitレンダラーを使用しているという印象を受けました。なぜ、同じHTMLとJavaScriptがPhoneGapの内部ではるかに遅く動作するのでしょうか?

P.S.これはasked beforeでしたが、私は元の質問が誤解されたと考えています。

+0

同じ問題が直面しています! Phonegapビルド用のソリューションはありますか? – byJeevan

答えて

16

を使用している場合は、私が不注意につまずいたかもしれませんこれに対する答え。私が働いていたアプリは、android:targetSdkVersionAndoroidManifest.xmlが本当に低い値に設定されていたことがわかりました(つまり、ターゲットのAndroidバージョンは2.2のようなものでした)。これを14(Android 4.0)にすると、少なくともICSやJelly Beanを実行している新しいAndroidデバイスでは、PhoneGapのパフォーマンスが大幅に向上しているようです。

低く設定すると、新しいバージョンのAndroidで導入されたパフォーマンスの改善の少なくとも一部が無効になっているようです。

PhoneGapでパフォーマンスを大幅に向上させるには、targetSdkVersionが、テスト対象の携帯電話でサポートされている最大SDKバージョンと一致していることを確認してください。

7

私はPhoneGapのを知りませんが、あなたはこれらを試すことができます。

  • android:hardwareAccelerated="true"を追加マニフェスト
  • にあなたはWebViewのwebview.getSettings().setRenderPriority(RenderPriority.HIGH);webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
+0

これを追加するタグがありますか? – Lekhnath

+1
2

これは直感的ですが、実際にはWebビューのハードウェアアクセラレーションをオフにする必要があります。 Android 4.0.4以降のハードウェアアクセラレーションは、キャンバスや他の再描画イベントでは何も行いませんが、実際にはそれらのイベントのCPUリソースを削除します。アプリのjavaファイル内のコード行を追加すること

試してみてください。

super.setLayerType(View.LAYER_TYPE_SOFTWARE、NULL);

マニフェストでもandroid:hardwareAccelerated = "false"と設定します。

+0

これは私のレンダリングの問題を解決し、アプリケーションを高速化しました。奇妙な。 – TWilly

+0

詳細をお知らせください –

0

私が経験したのと全く同じこと!以前はAndroid 3.xをテスト用に使用していました。私が4.4.2にアップグレードするとすぐに、私のCanvasは遅くなってしまいました!レンダリングのタイムラインを見ると、多くのラスタライズコールが100msを超え、FPSを約8に減らすことができます。 android:hardwareAccelerated = "false"は私の問題を解決しました。アンドロイドのバージョンによって、hardwareAccelerated = "true"を設定する方法はありますか?

関連する問題