我们使用 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 原生封装时的性能问题。