我正在构建一个多平台平板电脑应用程序,使用Phonegap 1.4使用它的webview包装它,然后我使用Sencha Touch 2框架实现我的魔力。通过多平台我的意思是iOS 5.X +和Android 3.0+(现在)。
这个应用程序到目前为止工作得很好,它的所有功能都适用于两个系统但是...在Android平板电脑(三星GalaxyTab)上它真的很慢。 发生了什么?我可以做些什么,或者只是android的限制吗?
由于
Ricardo Perre:http://edgecodetechology.blogspot.pt/
****编辑****(我试图让这篇文章对sencha社区有所帮助)
像许多其他Javascript框架一样,Sencha Touch并不是javascript本身的最佳性能示例。那为什么要使用 Sencha Touch ?
- 就我而言: 多平台 (iOS,Android,Windows Phone,Blackberry,Windows,Mac OSX,Linux。共享80-90%的代码)
Mitigating performance issues due to lack of visual pre-process in Android systems:
CSS3沉重的视觉过程:
良好的MVC实践:
对于任何滚动视图,应在Android上禁用过度滚动。我已经在Android设备上测试了许多Sencha Touch 2应用程序,并且由于延迟和滞后而导致过度滚动导致非常不愉快的体验。 (由Galaxy Tab,Nexus S和一些HTC测试)作者:Thiem Nguyen(我一直在挖你的帖子,对不起老兄:P)
答案 0 :(得分:16)
同样在这里。我在三星GalaxyTab上测试了很多我的Sencha Touch 2应用程序,性能非常糟糕。有一个事实(可能是实际原因的一部分),iOS在渲染之前会进行许多预处理和计算,以使用户的外观和感觉看起来更流畅,而Android则倾向于呈现&在旅途中同时处理。
总的来说,可以说,对于构建在Javascript上的每个跨平台移动应用程序,如Sencha Touch,iOS性能明显优于Android。然而,Sencha Touch开发团队正在尽力改善这一点,希望在下一版本中会更好。你可以看到这篇关于iOS& amp; Android设备性能对比。
http://www.sencha.com/blog/sencha-touch-2-developer-preview/
PS:虽然它与操作系统的限制非常相关,但您还可以优化您的应用,使其在Android设备上的性能更佳。根据我的经验,最佳做法是:
希望它有所帮助。
答案 1 :(得分:4)
我不是一个phoneGap或Sencha开发者,但我试图跟上浏览器性能和演变的关注。
你的应用程序有很多抽象层(sencha touch,phonegap,android,webkit,fffuuu),可能很难理解性能问题在哪里。
据我获得phonegap设计,它没有嵌入任何webkit实现,它(在android上)的功能是使用android.webkit.WebView。我发现很多人抱怨webview如何在android webkit浏览器本身上表现糟糕。 这里可能很难改进,因为你正在使用phonegap,搞砸android sdk可能会让你失去便携性,如果那对你很重要的话。
我认为在phonegap上的性能问题不仅取决于硬件,还取决于操作系统的浏览器实现。
如果您想调整性能,那么您可以改进js / css代码。这可以很简单,因为在js中缓存DOM节点(DOM查询很慢),保持DOM最小或者可能更难,因为由于phonegap针对不同的浏览器引擎实现,您可能需要将代码定位到那些浏览器以便提高绩效。
答案 2 :(得分:2)
我不太确定该问题是否与操作系统直接相关,就像应用程序在Android,iOS等上运行一样。
如果您在中低容量硬件设备(如Samsumg Galaxy)上测试Sencha Touch 2 Kitchen Sink示例,您将遇到性能低下的问题。
但是,如果您转向更好的硬件设备,例如HTC Desire 2(更接近iPhone 4S),您会看到性能变得更好。
与iOS相比,我认为Android对Sencha Touch 2的性能没有限制。我认为有些设备比其他设备更好(iOS总是在高性能设备上运行,iPhone / iPad)。
对于我们的苦难,人们倾向于拥有价格较低且硬件能力较强的产品。
答案 3 :(得分:0)
我对基于SenchaTouch的应用程序的性能有几个基本问题。 LinkedLN团队请参阅这篇文章,了解他们如何通过手动编码DOM操作来改善HTML5应用程序的性能: -
http://engineering.linkedin.com/linkedin-ipad-5-techniques-smooth-infinite-scrolling-html5
在本文的上下文中,我看到了Sencha Touch的两个问题: -
Sencha Touch通过将javascript对象转换为Dom节点并将其添加到Dom树中来构建其UI。 Chrome工具将显示它最终会向Dom树添加相对较多的DIV和其他DOM元素。这不会对表现产生不利影响。
Sencha UI中的大多数Dom节点都是由Sencha API代码生成的,而不是来自标记。如果我们编写代码直接操作这些Dom元素,我们可以确定它不会产生任何副作用吗?