【iOS】Instruments性能检测之耗电优化

摘要:
它为异步文件I/O提供了基于GCD的API。使用dispatch_ IO系统将优化磁盘访问);如果CPU利用率超过20%,电池电量将很快耗尽。CPU将被有效使用,当出现模糊输入时,用户将迅速做出反应,不做任何事情(4)GPU:应用程序应根据需要执行后台操作,并使用延迟的API来确保系统操作的有效执行。此外

  耗电优化最终目的:通过尽可能降低CPU、GPU功耗来降低手机电量消耗。

  (1)尽可能少用定时器;

  (2)优化I/O操作(所谓的I/O操作也就是文件操作,我们简称为I/O操作。怎么优化呢?尽量不要频繁写入小数据,最好批量一次性写入。读写大量主要的数据时,考虑用dispatch_io,其提供了基于GCD的异步操作文件I/O的API。用dispatch_io系统会优化磁盘访问);

  (3)数据量比较大的,建议使用数据库(SQlite、CoreData);

  影响耗电的几个方面:

  (1)Network : 网络活动会唤起需要长时间周期性供电的无线电模组,可以分批次进行网络请求,来降低开销.

  (2)Location :精密&高频的的定位会增加开销,需要按需使用.

  (3)CPU :CPU使用率超过20%就会快速耗干电池电量.高效使用CPU,并且当用户出现模糊输入时快速做出不做事情的反应.  

  (4)GPU :图形处理器(显卡的处理器),乱使用GPU会导致交互差,并且降低电池寿命.  

  (5)Background : 后台状态App仍会消耗电量,App要按需执行后台操作,并使用延迟APIs来保证系统运算高效执行.另外,在app进入后台状态是,立即减少动作,并且通知系统一次这些动作已经完成.

  1、网络优化

  (1)网络不可用,不要尝试执行网络请求;

func AlamofiremonitorNet() {
 let manager = NetworkReachabilityManager(host: "www.apple.com")
    manager?.listener = { status in
        print("网络状态: (status)")
        if status == .reachable(.ethernetOrWiFi) { //WIFI
            print("wifi")
        } else if status == .reachable(.wwan) { // 蜂窝网络
            print("4G")
        } else if status == .notReachable { // 无网络
            print("无网络")
        } else { // 其他
            
        }
        
    }
    manager?.startListening()//开始监听网络
   }

  (2)让用户可以取消长时间运行或者速度很慢的网络操作,设置合适的超时时间

var timeoutSessionManager1:Alamofire.SessionManager = {
     let configuration = URLSessionConfiguration.default
     //请求超时时间15秒
     configuration.timeoutIntervalForRequest = 15
     return Alamofire.SessionManager(configuration: configuration)
 }()

  (3)如果多次请求的结果相同,尽量使用缓存。

  (4)尽量使用断点续传,否则网络不稳定的时候可能多次传输相同的内容。

  2、定位优化

  (1)如果不是导航的应用,尽量不要实时更新位置,定位完毕就关掉定位服务;

  (2)尽量降低定位精度,比如尽量不要使用精度最高的KCLLocationAccuracyBest;精度越高,硬件模块功耗越大;

  (3)对于用不到定位的,info.plist文件中不要有定位权限的相关字段。

  以上就是笔者自己优化时候,修改的地方。

免责声明:文章转载自《【iOS】Instruments性能检测之耗电优化》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇iOS添加测试设备与调试echarts使用 图例改变和默认不选中下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

OpenGL学习随笔(一)-- CPU和GPU的设计区别

CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景。CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂。而GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。 于是CPU和GPU就呈现出非常不同的架构(示...

07mybatis使用日志框架logback显示sql语句

java 开发领域日志框架 log4j log for java logback 来显示mybatis sql语句 1、在mybatis框架配置文件中 src/main/resource/mybatis-config.xml 加入 <settings> <setting name="logPrefix" value="dao."/>...

解决安卓手机连接wifi总弹出“已登录到Wlan网络”

  安卓部分机型会在连接到wifi的时候不停地提示“已登录到Wlan网络”或者“登录到网络”,不小心点开那个提示就跳到一些广告网站了,这是由于原生安卓系统中开机后Google服务器会发送请求连接。当然,在国内,Google是无法访问的,一些手机厂家的工程师就把这个连接服务器设到了一些广告网站,让无数人心烦,下面教您彻底关闭“已登录到Wlan网络”或者“登录...

解除windows隐藏受保护的操作系统文件

对于文件夹:1。解除对某磁盘某个文件夹的强行隐藏(示例):attrib d:"Program Files" -s -h /s /d2,解除对某磁盘全部文件夹的强行隐藏(示例):attrib d:"*" -s -h /s /d——友情提示:以上示例中,d:为磁盘盘符;引号内为文件夹名称;相关命令参数: +r 设置只读文件属性。 -r...

使用虚拟机运行Ubuntu时,主机与宿主机共享文件的方法。

简介: 首先设置虚拟机: 虚拟机 -> 设置-> Hardware -> Network Adapter,在网络连接处设置为 “桥接:直接连接到物理网络”,“NAT:使用已共享的主机IP地址”处打勾。 再设置好ubuntu网络IP地址 Ping测试,看能否Ping通,在“系统->系统管理”下点击"网络工具" 如果能ping通...

使用vscode快速建立vue模板

当我们希望每次新建.vue文件后,vscode能够根据配置,自动生成我们想要的内容。 打开vscode编辑器,依次选择“文件 -> 首选项 -> 用户代码片段”,此时,会弹出一个搜索框,我们输入vue,将代码ctrl+c 到vue-html.json { "Print to console": { "prefix": "vue",...