Android性能达到2.3.5以后的版本(phonegap / cordova)

时间:2012-11-09 13:20:12

标签: javascript android performance cordova

目前我正在使用Phonegap / Cordova(2.1.0 / 2.2.0),JQ-Mobi(不是jQueryMobile),HTML5以及Javascript和CSS3开发Android应用程序。该应用程序包含2个本机扩展。

不知何故,当我将项目导出到具有最新Android版本的设备时,该应用程序运行速度比2.3.5设备慢得多。

我已经尝试启用HardwareAcceleration并删除所有框阴影和其他难以渲染css3的东西。仍然在4.1.1或4.0.4上运行糟糕。

我也升级到Cordova的最新版本(现在是2.2.0),似乎并没有让它变得更好。

当应用程序启动时,Javascript DOM操作会发生约80-90%。

最糟糕的表现是切换面板和滚动表单,其中大多数都有一些转换。 我在三星Galaxy S2 android 2.3.5上测试了它看起来很好并且表现很好。 相同的设备,但4.0.4运行糟糕。 三星Galaxy S3 4.1.1运行速度更快。 带有android 3.2.1的HTC Flyer P512运行它应该如何运行。

任何人都可以帮助我吗?我如何获得这种表现?我没有提到的任何提示或提示?

我想补充一点,我没有在Iphone 3gs上得到问题,并解释说这肯定是一个Android问题。

4 个答案:

答案 0 :(得分:2)

我的手机应用程序在iOS上运行流畅,但在Android上表现极差。据我所知,这只是因为Android在解释JavaScript方面要比iOS慢得多。

可以帮助很多的一件事就是减少jQuery和JQM等库的使用。如果要包含它们,请不要在不需要的地方使用它们。

jQuery.animate这样的函数在Android上运行得非常慢,你最好用原始JS迭代数组,而不是使用jQuery.each等等。

问题不仅在于图形渲染,还在于执行JavaScript的速度。虽然降低屏幕分辨率可以提高您的性能。

修改

我正试图自己解决这个问题,我唯一能得到的答案是将计算操作保持在最低限度。

  • 谨慎使用库并尽可能使用原始且编写良好的JavaScript解决您的问题
  • 保留一个小DOM并尽可能少地操作它
  • 利用JavaScript性能增强技术

因此,这似乎是一个核心性能问题,而不是可以在Phonegap层解决的问题。作为一个非科学的例子,我的一个应用上的完全相同的init()函数平均在iPhone 4s中执行大约1.2秒,而在我的三星Galaxy s3上完成缓慢的5秒钟。

答案 1 :(得分:1)

问题的核心是所有内容都在一个页面(执行上下文)中加载和运行,个人而言,虽然单页应用程序(sencha,jqmobile等)风靡一时,但现代设备上的性能却没有用户体验任何正义。我将应用程序分成不同的页面,这将显着减少DOM的大小,并为每个新页面创建单独的执行上下文,这意味着您的主页面(执行上下文)很好而且精简(DOM很小)。

答案 2 :(得分:1)

我遇到了完全相同的问题。我问过一个类似的问题,并经过一系列研究后最终自己回答了这个问题:

Cordova/Phonegap slow performance with Open Layers on new Tablet, but fine on new phone

我不会重复我给出的整个答案,但某些Android版本的性能缓慢是由于WebView中的一个错误,它限制了对基于GPU的进程的CPU支持,但是没有提供GPU支持以补偿。

Kitkat V4.4.3以上版本已经修复,但V4.4.2等旧版本仍然在某些设备上使用仍然受到影响。

您可以通过完全不使用WebView进行HTML渲染来避免这种情况,而是使用Crosswalk。对于我们的项目,这完全解决了这个问题,我们现在在我们所针对的所有Android版本中都有一个平稳运行的应用程序。这样做也很简单。

https://crosswalk-project.org/documentation/cordova.html

https://blog.nraboy.com/2014/10/use-crosswalk-ionic-framework-android-apps/

答案 3 :(得分:0)

尝试使用多线程和后台处理进行资源扩展操作。

当我在我的应用程序遇到类似问题时,当它在2.3.3之后的版本上运行时崩溃时,这对我有用。我从未使用过PhoneGap,所以我不确定你是怎么做的。