2012-07-12 99 views
6

我们正在开发一个煎茶触摸2个应用,这使得使用PhoneGap的,才能够安装它作为一个应用程序和访问设备的存储。这在iPad 2和iPad 3上运行得非常好。但是,当我们尝试在Android设备上运行应用程序时,性能非常缓慢。减慢系统的主要因素是列表和传送带。当我们试图通过Chrome浏览器测试相同的应用程序时,性能与iPad相当。煎茶触摸2 - Android的性能

你对我们能做些什么来改善Android上的表现,甚至抛弃的PhoneGap的一些东西,更好地工作的任何建议。或者,如果我们可以强制phonegap作为Chrome浏览器运行。

感谢您的时间&帮助。

+0

请参阅。我也使用phonegap和sencha。但直到现在,我还没有在性能方面遇到太多问题。可能是因为一些本地功能如条形码扫描等一切都很慢。但并不多。我会建议使用最新的corodova.jar文件。可能是1.8或1.9 – 2012-07-12 11:02:11

+0

我们实际上使用的是科尔多瓦版本1.9,但仍然表现不佳。我不得不提及,我们不是将其作为MVC应用程序开发,因为这是我们的第一个使用Sencha的项目,因此必须影响性能。许多人提到,问题的根源在于Phonegap工作的android的Web View,显然它对于heave站点来说并不好。 – user1520547 2012-07-12 11:26:30

+0

但我使用的是MVC架构。所以UI部分,我使用Sencha Touch 2和本地部分使用phonegap。但直到现在表现明智,这是好事。 – 2012-07-12 11:35:26

回答

12

你有这里的问题是,Android的浏览器不使用图形硬件加速。这意味着Sencha(以及其他HTML5库,如jQueryMobile,iScroll等)使用的标准技巧可以提供良好的滚动性能,例如CSS 3D转换可以使您的列表呈现在单独的图层中,然后在硬件上进行翻译,将无法在Android上运行。相反,列表滚动将完全由软件执行,这将会很慢!

然而,Chrome浏览器却提供了GPU加速功能。 Android设备不仅能够提供良好的HTML5体验,而且标准浏览器还没有充分利用GPU硬件。

除非你能强迫你的最终用户使用Chrome(我怀疑),唯一的选择是降解的用户体验,并为Android用户提供一个稍微简单的UI。

有关进一步详情,请参阅"IMPROVING THE PERFORMANCE OF YOUR HTML5 APP"

+0

这就是问题的具体解释,谢谢。不,因为我们不能强制用户使用chrome,因为我们需要为应用程序存储超过5MB的数据,所以本地存储不够。我会看看你提供的链接,也许我们可以牺牲一些视觉吸引力来提高性能 – user1520547 2012-07-12 11:17:48

0

尝试在AndroidManifest.xml中设置此标志: 机器人:硬件加速=“真”

+0

已经尝试过,但它似乎没有工作,性能与选项设置为false时的性能完全相同。也试图将目标sdk设置为15(4.0.3),但仍然无济于事 – user1520547 2012-07-12 11:16:13

0

更新:现在已经有更多的ST2现在更长的工作表现Android上的挑战只是你必须接受的。有很多事情可以做,以避免性能问题,如减少听众和事件,保持您的DOM灯(低于2000个节点),并通常避免任何CSS3转换和效果(这些特别是在Android上表现不佳)

另一件需要考虑的事情不是使用内置的WebView,而是使用CrossWalk浏览器并将其嵌入到APK中。

https://crosswalk-project.org

它增加了一个小尺寸的APK(15-20MB),但它的性能比内置的WebView更好,带来了稳定性和一致性,以一个非常分散的平台。考虑一下这样的现实:Android上的每个WebView取决于设备,供应商和操作系统版本可能在小方面有所不同。 CrossWalk将允许您在所有Android 4.0+设备上拥有完全相同的版本,并删除任何设备或供应商特定的问题。

没有银弹在Android上的表现。图形加速不会改进纯JavaScript执行或DOM操作的执行。如果你想知道为什么,然后从这里开始:

What's the difference between reflow and repaint?

年长的答案(可能仍然有效):

对于ICS及以上的web视图以下设置将显著提升渲染性能为煎茶触摸Android上:

mWebView.setLayerType(WebView.LAYER_TYPE_HARDWARE, null); 

但是以我的经验,这将取决于设备和平台VA引进的文物到CSS渲染riation。我没有具体找到这个原因,我也不希望谷歌解决它,因为webview组件将被Android 4.4中的更新和更好的版本取代。

https://developers.google.com/chrome/mobile/docs/webview/overview