Android性能达到2.3.5以后的版本(phonegap / 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问题。

  • Scala for Android的性能
  • 如何加速android ndk构建
  • 获得Pro-guard后无法find的常见超类
  • android ble慢慢连接
  • 如何加速Android仿真?
  • 为什么PNG压缩比Android上的JPEG慢得多?
  • 自定义字体TextView的性能问题
  • Ionic:已安装的Android应用程序中的缓慢转换
  • 我的手机应用程序在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秒。

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

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

    Cordova / Phonegap在新平板电脑上使用Open Layers降低了性能,但在新手机上运行良好

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

    Kitkat V4.4.3向上具有此固定function,但仍在某些设备上使用的旧版本(如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/

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

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