美文网首页
App耗电量优化

App耗电量优化

作者: huanghy | 来源:发表于2020-04-21 14:14 被阅读0次

    1.获取手机电量信息

    • 通过Instruments获取
      利用Xcode自带的Energy Log获取iPhone特定时段的电量消耗信息。具体步骤:打开Developer选项中的Start Logging —> 断开iphone与PC连接 —> 一系列的用户操作 —> Stop Logging —> 连接iphone与PC, 将电量消耗数据导入Instruments。

    • 通过UIDevice获取
      UIDevice提供了当前ios设备的详细信息,如name, systemVersion, localizedModel, batteryLevel等。

      UIDevice.currentDevice.batteryMonitoringEnabled = true
      let batteryLevel = UIDevice.currentDevice().batteryLevel
      UIDevice.currentDevice.batteryMonitoringEnabled = false
      

      在IOS 8.0之前,UIDevice中的batteryLevel只能精确到5%,而在IOS 8.0之后,开始支持1%的精确度。

    • 通过IOKit.framework来获取

      IOKit.framework在iOS中用来跟硬件或内核服务通信,常用于获取硬件详细信息,比如电池电量等。

    2.耗电分析

    ​ 手机中有哪些耗电场景:

    ​ (1)手机屏幕。手机中最耗电的模块肯定就是屏幕了,亮屏时间越长,电量消耗越快。

    ​ (2)CPU相关。每次您的应用更新(或“绘制”)内容到屏幕时,都要求CPU,GPU和屏幕处于活动状态。多余或效率低下的绘图可能会将系统资源从低功耗状态中拉出或阻止它们完全掉电,从而导致大量能源消耗。例如:大量使用动画、过多使用计时器、屏幕上的绘图过多、大量使用视图不透明度等。

    ​ (3)网络相关。一般情况下,网络相关(网络请求、数据传输、网络切换等)是仅次于屏幕的耗电大户。

    ​ (4)GPS定位。GPS定位涉及GPS位置传感器,也是耗电大户,平时不使用GPS的时候记得关掉。

    ​ (5)Camera。Camera涉及前后摄像头硬件,如果一直使用(录屏等),耗电也会非常可观。

    3.电量优化

    • 网络相关优化

      • 发起网络请求时机,业务区分当前网络请求是需要及时返回结果的(用户主动下拉刷新等),还是可以延迟执行的(异步上传数据等),可以延迟执行的有针对性地把请求行为绑定在一起发出。
      • 减少一个页面的接口数量,尽量合并成一个接口返回数据。
      • 数据处理
        • 压缩资料,在发送或接受数据之前,使用压缩算法尽可能地压缩数据。
        • 缓存数据,使用缓存将不经常更新的数据存储在本地。仅当数据已更改或用户请求时才重新下载数据。
        • 使用高效率的数据格式(JSON)和解析方法。
      • 慎用或禁用Polling(轮询)的方式去执行网络请求,可以采用APNs。
      • 减少推送消息次数和频率。App收到服务端大量或频繁的推送消息,对手机的耗电量会有一定影响。
      • 网络状态。在网络不可用状态下,尽早进入网络异常处理逻辑,避免不必要的运算逻辑。
    • 界面相关优化

      • 减少您的应用使用的视图数量。
      • 减少不透明度的使用,例如在显示半透明模糊的视图中。如果需要使用不透明度,请避免在不经常更改的内容上使用它。否则,能源成本会被放大,因为无论何时更改内容,背景视图和半透明视图都必须更新。
      • 当您的应用程序或其内容不可见时(例如,其他视图遮挡,剪辑或屏幕外),则消除绘图。
      • 离开某个界面后停止对应的耗电活动。例如,用户离开了A界面,而对应的耗电活动并没有及时停止,就会造成资源浪费。
      • 执行动画时,请使用一致的帧频。例如,如果您的应用每秒显示60帧,请在动画的整个生命周期内保持该帧速率。
      • 应用进入后台禁止异常消耗电量。
    • 定位相关优化

      • 不使用时停止定位服务,减少更新频率,根据实际情况切换GPS和网络,不要任何时候都同时使用两者。
      • 降低位置准确性和持续时间。
      • 慎用持续性定位,对大多数场景,使用一次定位接口即可。
      • 慎用被动定位,防止被动定位唤醒。
    • 电池状态

      ​ 在处理耗时耗电的任务时,如果该任务不是很紧急(例如下载应用的更新包),建议先判断一下电池电量是否足够,如果当前电池电量紧张,可以延迟到一定时间再执行该任务。

    • 消息广播

      程序中避免频繁地监听系统广播或业务消息造成严重耗电问题,灵活控制消息广播接收的有效与无效状态。

    • H5页面

      关注并测试H5页面的耗电量

    为吾优公众号.png

    相关文章

      网友评论

          本文标题:App耗电量优化

          本文链接:https://www.haomeiwen.com/subject/bvyuihtx.html