我使用jquery mobile和phonegap为android开发了一个应用程序。 我通过usb将应用程序部署到我的设备上。该应用程序的性能非常糟糕,尤其是在滚动更长的列表时。
奇怪的是:如果我只是打开手机上的浏览器并直接访问index.html,整个应用程序运行顺畅。相同的技术,相同的内容。我不使用phonegap native api或类似的东西。
在android 4.0.2上使用phonegap 1.5.0和1.7.0rc1,jquery mobile 1.1.0进行测试。
有什么想法吗?
答案 0 :(得分:11)
在蜂窝(3.0),冰淇淋(4.0)和后部设备上,您可以通过在<中添加以下内容来提高性能。申请......>标记:
android:hardwareAccelerated="true"
您可以将minSdk设置为8(Android 2.2)以实现兼容性,将targetSdk设置为15(Android 4.0),这将使硬件加速仅在设备上可用时才能正常工作。
我相信使用这个标志我的应用程序的性能等于在浏览器中运行它们,所以我猜它是因为浏览器是用硬件加速编码的:)
答案 1 :(得分:2)
我遇到了类似的问题:一个包含更长“中等复杂”主题div列表的页面。 HTC手机的浏览器在显示方面没有问题。但在phonegap应用程序渲染中完全失败。我看到了一种WSOD,只有在触摸显示屏后才会消失。触摸后,页面显示正确。
当我将div-list缩短为一个或两个div-elements时,或当我减少了div中的子元素并减少了由css复杂性引起的渲染工作量时,问题就不存在了。
白色的屏幕看起来像是整个身体都看不见,因为只显示了背景颜色的文件(我为此添加了浅粉色)。所以我想,在阅读this thread
之后,渲染就成了问题我尝试了我发现in this thread的各种提案,以使应用无需“WSOD”。但没有任何效果。其中一些使应用程序显示真的更糟。
最后,经过一整天的搜索,我成功了。我设置了AndroidManifest的标签(不是标签)
<application android:hardwareAccelerated="false" ...
现在,该应用程序的行为方式与我的webbrowser相同。似乎,如果硬件加速并不总是最好的功能...
我的版本: phonegap 3.5.0,Android 4.0.3,jQuery v2.1.0,HTC Sense 3.6
答案 2 :(得分:1)
在javascript性能方面,本机浏览器和webview之间可能存在差异。
答案 3 :(得分:0)
如果您可以确认浏览器的性能更好(在您的代码中不是最不令人沮丧但不会令其他人感到不舒服),您可以考虑部署为html5离线应用程序,以便实际在浏览器中运行。
答案 4 :(得分:0)
我们在使用jquery mobile滚动相同数量的列表项时遇到了性能问题。我们使用iScroll库重写了应用程序,性能非常差(我们甚至没有在PhoneGap环境中尝试过)...现在应用程序滚动非常顺利。
如果您处于开发阶段,可以尝试更改UI库。
在这种情况之后,我们经常将我们的应用程序部署到测试设备上,以便及时管理性能问题......这成了一个“政策”:)