几个月来,我们一直在使用 Telerik 的 PhoneGap 1.8.1 和 Kendo UI 开发一个相当重要的 iOS 应用程序。我会说 iOS 应用程序的速度大约是其原生应用程序的 90%,这对我们来说是完全可以接受的。我们采用完全相同的代码库并替换为 Android 等效的 javascript 文件,启动我们的设备(运行 4.0.3 的摩托罗拉 Xoom),性能非常糟糕。最糟糕的是页面转换——可能需要 0.3 秒——需要 2-5 秒。在模拟器上的性能即使不差也一样(不足为奇)。
如果我可以发布有用的代码,请告诉我。否则我想我们正在寻找遇到这种情况的其他人和/或性能改进建议。在这一点上,PhoneGap 对我们来说完全不是 Android 开发的启动器。
最佳答案
我们使用 Sencha Touch 2 进行了一些跨平台移动开发(没有使用 Kendo UI 的经验)。上次我详细研究性能时,Sencha Touch 2 是全功能/成熟的跨平台移动框架(Jquery Mobile、Kendo UI 等)中性能最好的。我们的经验是 Android 上的性能比 iOS 慢得多(尽管 Sencha Touch 2 被认为有点快)。滚动列表、屏幕转换等都低于标准。我对性能差异感到相当震惊。 Android 性能在我运行 4.0 的 Galaxy Nexus 上更好,但仍然明显慢于 iOS 设备。
不幸的是,我没有找到一种方法让您的应用在 Android 上执行与在 iOS 上相同的操作。这是我不久前遇到的不幸现实。您看到的问题是由于浏览器在不同平台上的性能所致; phonegap 仅使用 UIWebView 和 WebView 将 html 和 javascript 页面加载到 native 应用程序包装器中。您可以在设备的浏览器中加载 Kendo UI 应用程序吗?我假设性能与原生包装的应用程序相同。
我们的“解决方案”是首先针对 Android 进行开发,然后让应用程序达到正常运行的程度。然后我们知道它们在 iOS 设备上会很棒。
我对 Kendo UI 不是很熟悉,但就建议或调整而言,我们会尽可能少地保留在 DOM 中。当应用程序启动时,我们在 DOM 中创建尽可能少的内容,然后在应用程序需要时创建/销毁对象。此外,仅对 javascript 进行一般优化也有帮助。
我认为这是这些移动框架的一个肮脏的小 secret 。当你向他们询问这件事时,他们的回答是 Android 浏览器性能很慢,所以应用程序会很慢。 IE。 “不是我们的错”,但他们继续描绘一个适用于所有平台的框架。
对我们来说,Sencha Touch 2 足够快,可以为我们的用户在 Android 设备上提供良好的体验,因此与为每个平台开发本地应用程序相比,节省大量时间是值得的。
澄清一下,您看到的性能问题可能与 PhoneGap 无关,而是浏览器在设备上的性能问题。 PhoneGap 本质上只是将 WebView 包装在 native 应用程序包装器中。当同时使用 PhoneGap 和 Sencha Touch native 打包时,我们已经看到了 Android 上的性能问题。
关于android - 将 PhoneGap iOS 应用程序迁移到 Android - 遇到严重的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11191819/