zoukankan      html  css  js  c++  java
  • Android 电量优化

    应公司要求,使用混合开发app,背景动画使用的是js+h5,但是在app运行时,高耗电,弹出耗电高弹框,这样很不友好;

    没办法,谁让咱们是苦逼的攻城狮,只能去分析原因:

    首先搭建docker + battery historian环境(不了解的可以去度娘一下,有时间我会弄一篇环境搭建的);

    工具准备好了开始撸了;

    adb shell 

    top -m 5

    运行后 发现 耗电前五名 app高举榜首(汗颜);

    分析数据发现 在H5动画运行界面。CPU占用率始终是在30%左右,大家都知道 CPU运行时很耗电的,所以大致原因已发下;

    接着导出adb bugreport > bugreport.txt

    分析bugreport报告,发现传感器和屏幕 耗电比较多;其他暂时无发现;

    暂时感觉再无其他 ;最终分析高耗电原因结果是:H5动画占用CPU过高、传感器调用频繁、视屏播放时长、屏幕常亮这几个原因造成;

    原因已经查到,那就解决吧:

    1.H5动画 占用CPU过高

      原因是因为H5动画重绘,造成webview重绘,也就造成界面重绘,这样是很让费CPU和GPU  造成高耗电的;

      解决办法:

    方法一:把H5动画换成gif,然后放在服务器上,不让H5重绘;(不是太建议,因为很多逻辑都是js开发,所有小伙伴不太想采用方法二)

    方法二:把H5动画换成gif,直接设为界面背景图(个人感觉这是最好的方式,当然需要注意GIF的大小,最好不要超过1M)

    通过上述方法,发现CPU 占用率下降了原来的1/3,这样耗电就会减少了

    2.传感器调用频繁

    原因是传感频繁调用造成软硬件交互,这会造成高耗电

    解决办法:

    优化采集参数,降低传感器调用频次等;

    3.视频播放+屏幕常亮

    这个 因为app性质决定,本来就是播放视频的app,这是没法降低的,所以小编就放弃向这个方向优化的目标;

    总上处理后,耗电量明显降低;

    嘿嘿:有不当之处,欢迎交流指正,谢谢!

  • 相关阅读:
    request.getParameter() 、 request.getInputStream()和request.getReader() 使用体会
    HTTP之Content-Length
    关于spring3中No Session found for current thread!and Transaction的配置和管理(转)
    Java数据类型和MySql数据类型对应一览
    Spring MVC 解读——View,ViewResolver(转)
    LeetCode 441. Arranging Coins
    LeetCode 415. Add Strings
    LeetCode 400. Nth Digit
    LeetCode 367. Valid Perfect Square
    LeetCode 326. Power of Three
  • 原文地址:https://www.cnblogs.com/yi-snow-W/p/10916239.html
Copyright © 2011-2022 走看看