24

我正在构建一个多平台平板电脑应用程序,仅使用其 webview 将其与 Phonegap 1.4 包装在一起,然后我使用 Sencha Touch 2 框架来发挥我的魔力。多平台是指 iOS 5.X+ 和 Android 3.0+(目前)。

到目前为止,这个应用程序运行良好,它的所有功能都适用于两个系统,但是......在 Android 平板电脑(三星 GalaxyTab)上它真的很慢。发生了什么?我可以做点什么,或者它只是android的限制?

谢谢

里卡多·佩尔:http: //edgecodetechology.blogspot.pt/


****编辑****(我试图让这篇文章对煎茶社区有所帮助)

由于 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:

  1. CSS3重视觉流程:

    • 避免渐变
    • 避免阴影
    • 避免变换和动画
  2. 良好的 MVC 实践:

    • 不要使用更多视图,而您实际上正在展示
    • 尽可能预渲染/预数据获取,以避免同时渲染和数据处理
  3. 对于任何滚动视图,应在 Android 上禁用过度滚动。我已经在 Android 设备上测试了许多 Sencha Touch 2 应用程序,并且由于延迟和滞后,过度滚动会导致非常不愉快的体验。(在 Galaxy Tab、Nexus S 和一些 HTC 上测试)由 Thiem Nguyen (我一直在挖掘你的帖子,对不起伙计:P)

4

4 回答 4

16

同样在这里。我在三星 GalaxyTab 上测试了很多 Sencha Touch 2 应用程序,性能真的很糟糕。有一个事实(这可能是实际原因的一部分),iOS 在渲染之前会进行许多预处理和计算,以使其在用户的外观和感觉上看起来更流畅,而 Android 倾向于在旅途中同时渲染和处理。

总的来说,可以说,对于像 Sencha Touch 这样的基于 Javascript 的跨平台移动应用程序,iOS 的性能明显优于 Android。但是,Sencha Touch 开发团队正在尽最大努力改进这一点,希望在下一个版本中会更好。你可以看到这篇关于 iOS 和 Android 设备性能比较的文章。

http://www.sencha.com/blog/sencha-touch-2-developer-preview/

PS:虽然它与操作系统的限制密切相关,但您也可以优化您的应用程序,使其在 Android 设备上表现更好。根据我的经验,最佳做法是:

  • 不要过多地使用 CSS3。
  • 尽可能减少 DOM。

希望能帮助到你。

于 2012-04-10T08:56:50.410 回答
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 的目标是不同的浏览器引擎实现,您可能需要将代码定位到这些浏览器以便提高性能。

于 2012-05-03T00:00:55.597 回答
2

我不太确定问题是否与操作系统直接相关,就好像应用程序在 Android、iOS 等设备上运行一样。

如果您在中低性能硬件设备(如 Samsumg Galaxy)上测试 Sencha Touch 2 Kitchen Sink 示例,您将遇到性能低下的问题。

但是,如果您转向更好的硬件设备,例如 HTC Desire 2(更接近 iPhone 4S),您会发现性能会变得更好。

我认为与 iOS 相比,Android 在 Sencha Touch 2 的性能方面没有限制。我只是认为有些设备比其他设备好(iOS 总是在高性能设备上运行,iPhone/iPad)。

对于我们的痛苦,人们倾向于拥有价格较低且硬件能力强的产品。

于 2012-04-26T19:46:03.680 回答
0

关于基于 SenchaTouch 的应用程序的性能,我有几个基本问​​题。请参阅 LinkedLN 团队的这篇文章,了解他们如何通过手动编码 DOM 操作来提高 HTML5 应用程序的性能:-

http://engineering.linkedin.com/linkedin-ipad-5-techniques-smooth-infinite-scrolling-html5

在本文的上下文中,我看到了 Sencha Touch 的两个问题:-

  1. Sencha Touch 通过将 javascript 对象转换为 Dom 节点并将它们添加到 Dom 树中来构建其 UI。Chrome 工具将显示它最终会在 Dom 树中添加相对较多的 DIV 和其他 DOM 元素。这不会对性能产生不利影响。

  2. Sencha UI 中的大多数 Dom 节点是由 Sencha API 代码生成的,而不是由标记生成的。如果我们编写代码直接操作这些 Dom 元素,我们能确定它不会产生任何副作用吗?

于 2012-08-03T10:57:29.557 回答