20

私は Android 上で PhoneGap と組み込みのブラウザでまったく同じ Web アプリを実行しています。アプリはビルトイン ブラウザでは正常に動作しますが、PhoneGap では信じられないほど遅くなります。ページの基本的なスクロールでさえ、PhoneGap の下では途切れます。

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

PSこれは以前に尋ねられましたが、文言のために元の質問が誤解されたと思います。

4

4 に答える 4

15

私はうっかりこれに対する答えに出くわしたかもしれません。私が取り組んでいたアプリは非常に低い値android:targetSdkVersionに設定されていたことが判明しました (つまり、私のターゲット Android バージョンは 2.2 のようなものでした)。AndroidManifest.xmlこれを (Android 4.0) に増やす14と、少なくとも ICS または Jelly Bean を実行している新しい Android デバイスでは、PhoneGap のパフォーマンスが大幅に向上したようです。

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

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

于 2012-09-13T00:17:28.710 に答える
7

私はphoneGapを知りませんが、これらを試すことができます:

  • android:hardwareAccelerated="true"マニフェストへの追加
  • webviewwebview.getSettings().setRenderPriority(RenderPriority.HIGH);webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
于 2012-08-28T20:42:25.457 に答える
2

直感に反しますが、実際には WebView のハードウェア アクセラレーションを無効にする必要がある場合があります。Android 4.0.4 のハードウェア アクセラレーションは、キャンバスやその他の再描画イベントに対しては何もしませんが、実際にはこれらのイベントの CPU リソースを削除します。

アプリの Java ファイルに次のコード行を追加してみてください。

super.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

また、マニフェストで android:hardwareAccelerated="false" を設定します。

于 2013-12-06T03:30:05.670 に答える
0

私が経験したのとまったく同じこと!以前は、テスト用に Android 3.x を使用していました。4.4.2 にアップグレードするとすぐに、Canvas が非常に遅くなりました。レンダリング タイムラインを見ると、多くのラスタライズ呼び出しが 100 ミリ秒以上かかり、FPS が約 8 に低下していることがわかりました。android:hardwareAccelerated="false" は私の問題を解決しました。Android のバージョンに応じて hardwareAccelerated="true" を設定する方法はありますか?

于 2015-02-19T19:57:31.713 に答える