【问题标题】:Why is PhoneGap slower than Browser?为什么 PhoneGap 比浏览器慢?
【发布时间】:2012-08-28 20:05:40
【问题描述】:

我在 Android 上的 PhoneGap 和内置浏览器下运行相同的网络应用程序。该应用程序在内置浏览器上运行良好,但在 PhoneGap 下速度慢得令人难以置信。在 PhoneGap 下,即使是页面上的基本滚动也会卡顿。

总的来说,我可能做错了什么吗?我的印象是 PhoneGap 只是使用与普通浏览器应用程序相同的 WebKit 渲染器,那么为什么相同的 HTML 和 JavaScript 在 PhoneGap 中运行速度要慢得多?

附:这是asked before,但由于措辞,我认为最初的问题被误解了。

【问题讨论】:

  • 面临同样的问题! Phonegap 构建的任何解决方案?

标签: android cordova cordova-2.0.0


【解决方案1】:

我可能无意中偶然发现了这个问题的答案。结果发现,我正在开发的应用程序将AndroidManifest.xml 中的android:targetSdkVersion 设置为非常低的值(即我的目标Android 版本类似于2.2)。将其增加到 14 (Android 4.0) 似乎极大地提高了 PhoneGap 的性能,至少在运行 ICS 或 Jelly Bean 的较新 Android 设备上是这样。

设置较低的targetSdkVersion 似乎至少会禁用较新版本的 Android 中引入的部分性能改进。

因此,如果您想看到 PhoneGap 的性能大幅提升,请确保您的 targetSdkVersion 与您正在测试的手机支持的最大 SDK 版本匹配。

【讨论】:

    【解决方案2】:

    我不知道phoneGap,但你可以试试这些:

    • 在清单中添加android:hardwareAccelerated="true"
    • 如果您使用 webview webview.getSettings().setRenderPriority(RenderPriority.HIGH);webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

    【讨论】:

    • 有什么标签可以加这个/这些
    【解决方案3】:

    这是违反直觉的,但您实际上可能需要为您的 webview 关闭硬件加速。从 Android 4.0.4 开始,硬件加速对画布和其他重绘事件没有任何作用,但实际上会为这些事件移除 CPU 资源。

    尝试在您的应用程序 java 文件中添加这行代码:

    super.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

    还要在清单中设置 android:hardwareAccelerated="false"。

    【讨论】:

    • 这解决了我的一些渲染问题并加快了我的应用程序。很奇怪。
    • 您能否提供更多详细信息
    【解决方案4】:

    和我经历的一模一样!以前我使用 Android 3.x 进行测试。一旦我升级到 4.4.2,我的 Canvas 就非常缓慢!查看渲染时间线,我可以看到许多光栅化调用超过 100 毫秒,并将我的 FPS 降低到大约 8! android:hardwareAccelerated="false" 解决了我的问题。有没有办法根据android版本设置hardwareAccelerated="true"?

    【讨论】:

      猜你喜欢
      • 2011-04-09
      • 1970-01-01
      • 2011-10-22
      • 1970-01-01
      • 2015-04-25
      • 1970-01-01
      • 2014-01-06
      • 2016-03-30
      • 1970-01-01
      相关资源
      最近更新 更多