现在的位置: 首页 > 综合 > 正文

Android WebView CPU高负荷问题

2017年10月04日 ⁄ 综合 ⁄ 共 1682字 ⁄ 字号 评论关闭

       在Android中采用网页的方式进行视频数据展现和播放时,发现CPU总是居高不下,在70%—80%之间徘徊,所以通过以下方式来查看和定位:
      1、adb shell: top -m 5 -s cpu 和 top -m 10 -t
      2、DDMS:Heap、Threads、Allocation Tracker、System Information
           均未发现有价值信息,再看看WebViewCoreThread、MediaServer占用的CPU、内存也并不高,所以进行如下隔离测试:
      1、单独的APK视频播放 正常
      2、单独的HTML+视频播放 正常 
      3、载入视频页面+播放视频 异常
      4、载入视频页面+不播放视频 异常

     看来都没有关系,最后发现光标从滚动字幕上离开时,CPU逐渐恢复正常……,总结一下:单独用marquee本身,影响不是很大,主要在于页面如果有其他的脚本事务,如光标系统、视频播放等往往会因为滚动效果的叠加CPU占用情况会放大还有个更为重要的一点,应该算是Android的一个BUG:如果manifest中不配置android:targetSdkVersion="15"
类的属性,一切正常如果配置了则CPU提升很明显。
除此之外:

     1、在WebView中尽可能不要使用GIFs、Marquee、Blink等动画和渲染效果
          Marquee不要用,有四个以上页面会好卡,如果的确需要使用可以用程序写,JQUERY中应该有现成的。
     2、Gif可以用但不要太多,页面加载状态的控制可以用一下,其他的不要考虑,
          当然GIF不显示出来,也不会占用CPU。

此外,如果WebView从前台切换到后台,记得及时暂停或释放资源,可参考以下方式来降低性能开销:

http://www.ilovn.com/topic/android-developers-use-webview-program-into-the-background-is-still-occupied-by-the-cpu-solution/ 
http://stackoverflow.com/questions/11447057/my-app-consume-high-cpu


附上一些相关参考资料:

1、以上几类应用的性能参考

http://osdir.com/ml/AndroidDevelopers/2009-01/msg00601.html

http://stackoverflow.com/questions/3652583/enhance-webview-performance-should-be-the-same-performance-as-native-web-browse

2、WebViewCoreThread problem

     

http://www.anddev.org/other-coding-problems-f5/webviewcorethread-problem-t10234.html

2、WebView的一些优化

     http://stackoverflow.com/questions/4081250/android-webview-performance
3、硬件加速:http://blog.csdn.net/think_soft/article/details/7672151

     http://blog.csdn.net/qq295445028/article/details/8244575
4、WebView内存泄漏:
http://blog.csdn.net/l_serein/article/details/9007479

5、Android TextView -跑马灯CPU负载:http://www.91r.net/ask/19163148.html


 

针对WebView中加载页面的优化,同样请参考我前面的博文:

http://blog.csdn.net/webwalker/article/details/6563519

抱歉!评论已关闭.