目前我正在使用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问题。
答案 0 :(得分:2)
我的手机应用程序在iOS上运行流畅,但在Android上表现极差。据我所知,这只是因为Android在解释JavaScript方面要比iOS慢得多。
可以帮助很多的一件事就是减少jQuery和JQM等库的使用。如果要包含它们,请不要在不需要的地方使用它们。
jQuery.animate这样的函数在Android上运行得非常慢,你最好用原始JS迭代数组,而不是使用jQuery.each等等。
问题不仅在于图形渲染,还在于执行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,所以我不确定你是怎么做的。