20

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

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

PS这已经被问过,但由于措辞我认为原来的问题被误解了。

4

4 回答 4

15

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

设置低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 回答