5

几个月来,我们一直在使用 PhoneGap 1.8.1 和 Telerik 的 Kendo UI 开发一个相当大的 iOS 应用程序。我会说 iOS 应用程序的速度大约是其原生应用程序的 90%,这对我们来说是完全可以接受的。我们采用了完全相同的代码库并替换了 Android 等效的 javascript 文件,启动了我们的设备(运行 4.0.3 的摩托罗拉 Xoom),但性能非常糟糕。最糟糕的是页面转换——这可能需要 0.3 秒——需要 2-5 秒。模拟器上的性能即使不是更差也是相同的(这并不奇怪)。

如果我可以发布有用的代码,请告诉我。否则,我想我们正在寻找遇到这种情况的其他人和/或性能改进建议。在这一点上,PhoneGap 对我们来说完全不是 Android 开发的入门者。

4

1 回答 1

8

我们使用 Sencha Touch 2 进行了一些跨平台的移动开发(没有使用 Kendo UI 的经验)。上次我详细研究性能时,Sencha Touch 2 是功能齐全/成熟的跨平台移动框架(Jquery Mobile、Kendo UI 等)中性能最好的。我们的经验是,Android 上的性能比 iOS 慢很多(尽管 Sencha Touch 2 被认为有点快)。滚动列表、屏幕转换等都低于标准。我对性能差异感到相当惊讶。运行 4.0 的 Galaxy Nexus 上的 Android 性能更好,但仍明显慢于 iOS 设备。

不幸的是,我看不到让您的应用程序在 Android 上与在 iOS 上执行相同的方法。这是我不久前遇到的不幸现实。您看到的问题是由于浏览器在不同平台上的性能造成的;phonegap 只是使用 UIWebView 和 WebView 在原生应用程序包装器中加载 html 和 javascript 页面。您可以在设备的浏览器中加载 Kendo UI 应用程序吗?我假设性能与原生包装的应用程序相同。

我们的“解决方案”是首先针对 Android 进行开发,并让应用程序达到其性能良好的地步。然后我们知道它们在 iOS 设备上会很棒。

我对 Kendo UI 不是很熟悉,但就建议或调整而言,我们尽量在 DOM 中保留尽可能少的内容。当应用程序启动时,我们尽可能少地在 DOM 中创建,然后根据应用程序的需要创建/销毁对象。此外,仅对 javascript 进行一般优化会有所帮助。

我认为这是这些移动框架的一个肮脏的小秘密。当你与他们联系时,他们的回答是 Android 浏览器性能很慢,所以应用程序会很慢。即“不是我们的错”,但他们继续描绘一个在所有平台上都运行良好的框架。

对我们来说,Sencha Touch 2 速度足够快,它为我们的用户在 Android 设备上提供了不错的体验,因此与为每个平台开发原生应用程序相比,节省大量时间是值得的。

澄清一下,您看到的性能问题可能与 PhoneGap 无关,而是设备上的浏览器性能。PhoneGap 本质上只是将 WebView 包装在原生应用程序包装器中。我们已经看到了在 Android 上同时使用 PhoneGap 和 Sencha Touch 原生封装时的性能问题。

于 2012-06-25T15:24:21.383 回答