PhoneGap - 与 Android 上的浏览器相比性能较差
Posted
技术标签:
【中文标题】PhoneGap - 与 Android 上的浏览器相比性能较差【英文标题】:PhoneGap - Bad Performance compared to Browser on Android 【发布时间】:2012-05-09 01:00:35 【问题描述】:我使用 jquery mobile 和 phonegap 为 android 开发了一个应用程序。 我通过 USB 将应用程序部署到我的设备上。应用程序的性能非常糟糕,尤其是在滚动更长的列表时。
奇怪的是:如果我只是打开手机上的浏览器并直接访问 index.html,整个应用程序运行流畅。同样的技术,同样的内容。我不使用 phonegap 原生 api 或类似的东西。
在 android 4.0.2 上使用 phonegap 1.5.0 和 1.7.0rc1、jquery mobile 1.1.0 测试。
有什么想法吗?
【问题讨论】:
假设两者都使用系统 webkit 库,这似乎是在一个环境或另一个环境中的不同配置设置或附加附加组件,或者您的代码中有一些奇怪的东西挑战了一个但不是其他。指向 javascript 基准站点可能会很有趣 我只是好奇我们在这里讨论的列表有多大? @codaniel:大约 50 个带有缩略图的元素 @Chris:我不使用任何只在 phonegap 中运行的插件或代码 您可能没有,但浏览器很可能具有系统 webview 功能的扩展/覆盖 - 这就是您的链接推测的内容。但要排除 javascript 中的问题 - 同时指向一个基准站点,看看您是否看到其他人代码的性能差异的证据。 【参考方案1】:在蜂窝 (3.0)、冰淇淋 (4.0) 和后置设备上,您可以通过在 标签中添加以下内容来提高性能:
android:hardwareAccelerated="true"
您可以将 minSdk 设置为 8 (Android 2.2) 以实现兼容性,将 targetSdk 设置为 15 (Android 4.0),这将使硬件加速仅在设备上可用时工作。
我相信有了这个标志,我的应用程序的性能就等于在浏览器中运行它们,所以我猜是因为浏览器是用硬件加速编码的:)
【讨论】:
这对我也有用。我遇到的具体问题是使用 Phonegap + FastClick + Android 4.1.1+ 时的键盘/打字性能 - 打字性能非常滞后(在浏览器或 Android 2.3 中没有问题)。启用这个标志解决了这个问题:-) 哇!它在我糟糕的三星 2.3 中的表现确实要好得多【参考方案2】:我遇到了类似的问题:一个页面包含较长的“中等复杂”主题 div 列表。 HTC手机的浏览器显示没有问题。但在 phonegap 应用程序内渲染完全失败。我看到了一种WSOD,只有在触摸显示屏后才消失。触摸后,页面显示正确。
当我将 div 列表缩短为一两个 div 元素时,或者当我减少 div 中的子元素并减少由 css 复杂性引起的渲染工作时,问题并不到位。
如果整个身体不可见,则白色屏幕看起来像,因为仅显示文档背景色(为此我添加了浅粉色)。所以我猜,看this thread后渲染是问题@
我尝试了我找到的各种建议 in this thread 使应用程序在没有“WSOD”的情况下运行。但没有任何效果。其中一些使应用的显示效果更差。
终于,经过一整天的搜索,我成功了。我在我的 AndroidManifest 的标签(不是标签)内设置
<application android:hardwareAccelerated="false" ...
现在,该应用程序的运行方式与我的网络浏览器相同。似乎,如果硬件加速并不总是最好的功能......
我的版本: phonegap 3.5.0、Android 4.0.3、jQuery v2.1.0、HTC Sense 3.6
【讨论】:
【参考方案3】:在这里找到答案:http://groups.google.com/group/phonegap/browse_thread/thread/94da1cf881abe995/6d4f7aea7aeba523?lnk=gst&q=performance
在 javascript 性能方面,本机浏览器和 webview 之间可能存在差异。
【讨论】:
【参考方案4】:如果您可以确认浏览器的性能更好(在您的代码中不是次优的东西令人沮丧,但不是另一个),您可以考虑部署为 html5 离线应用程序,以便您可以在浏览器中实际运行。
【讨论】:
【参考方案5】:我们在使用 jquery mobile 滚动相同数量的列表项时遇到了性能问题。性能太差了(我们甚至没有在 PhoneGap 环境中尝试过),以至于我们使用 iScroll 库重写了应用程序......现在应用程序滚动非常流畅。
如果您处于开发初期,您可以尝试更改 UI 库。
在这种情况下,我们经常部署我们的应用程序来测试设备以及时管理性能问题......这成为了一项“政策”:)
【讨论】:
以上是关于PhoneGap - 与 Android 上的浏览器相比性能较差的主要内容,如果未能解决你的问题,请参考以下文章
mediaelement.js 与 Phonegap 兼容吗?
Android 浏览器分享到 phonegap 应用程序的链接
Websocket在使用phonegap的android应用程序中不起作用