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

时间:2015-01-08 17:36:38

标签: android cordova openlayers

我开发了一个应用程序,它在Android上使用Cordova / Phonegap来显示Open Layers 3地图。

这与这个项目非常相似:

https://github.com/netgis/ol3

我发现应用程序在运行Kitkat V4.4.4的Samsung Note 4上运行顺畅,并且在运行Jellybean的旧S2上运行良好(实际上几乎同样好),但运行非常慢慢地使用运行KitKat V4.4.2的全新Galaxy Tab Pro 12.2。

我想知道是否有任何可能知道原因的Cordova / Phonegap专家。

我能看到的唯一区别是android的版本! V4.4.4和V4.4.2。

我发现SO上的线程一般说WebView可能是一个问题并导致性能下降,但我在Note 4上获得了很好的性能,并且S2的运行速度比平板电脑使用Jellybean要好。

我不确定代码在这里显示是否有用,本质上我有一个Cordova Android应用程序,其中包含一个嵌入了Open Layers 3 map的HTML文档,就是这样。

1 个答案:

答案 0 :(得分:2)

问题最终出现在使用默认Android浏览器的WebView上。出于某种原因,如果您尝试使用GPU加速(默认情况下启用),此浏览器会限制CPU支持,但本身并不提供GPU加速(这真的很奇怪,但确实如此)。

显然,在Android V4.4.3之前,KitKat存在此问题。因此,如果您正在运行V4.4.4,您将无法解决此问题(因为它使用的是Chromium而不是默认浏览器)。

这是我发现的许多参考资料之一,证实了这一点:

https://code.google.com/p/chromium/issues/detail?id=315111

有些设备尚未更新到此级别,以下是我完全最新的设备:

平板电脑使用Android V4.4.2

S2使用Android V4.0.2

Note 4使用Android V4.4.4

S2使用Jelly Bean,因此很好,Note 4使用更新的KitKat并且运行良好,但是平板电脑在应用程序中遇到困难,因为它低于V4.4.3而无法使用。

对我来说,SO上的大多数建议解决方案都是禁用硬件加速,但这些建议并不合适,因为我的应用确实需要硬件加速才能有效地渲染地图。

解决方案是通过使用Crosswalk强制使用Chromium而不管操作系统版本,完全解决这个问题。

我发现有很多资源可以使用Cordova与人行横道协同作用:

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

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