2012-08-28 90 views
20

我在Android下的PhoneGap上和内置的浏览器下运行相同的确切Web应用程序。该应用在内置浏览器上运行良好,但在PhoneGap下令人难以置信。即使在PhoneGap下的页面结构基本滚动。为什么PhoneGap比浏览器慢?

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

P.S.这是asked before,但由于措辞,我认为原来的问题被误解了。

+0

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

回答

16

我可能无意中偶然发现对此的答案。结果发现我正在使用的应用程序的中的android:targetSdkVersion的值设置得非常低(即我的目标Android版本类似于2.2)。将此增加到14(Android 4.0)似乎已经极大地提高了PhoneGap的性能,至少在运行ICS或Jelly Bean的较新Android设备上。

设置较低的targetSdkVersion似乎会禁用至少一些在新版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

<应用程序android:hardwareAccelerated =“true”确实修复了我缓慢的滚动问题 – jwinn

2

这是违反直觉的,但您可能实际上需要关闭您的webview的硬件加速。从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”解决了我的问题。有没有办法根据android版本设置hardwareAccelerated =“true”?

相关问题