iOS耗电量检测与优化

一、耗电量检测

1、进入手机"设置"->"电池",可以直观的看出来手机应用的耗电情况。

image.png

image.png

2、使用Xcode打开你的工程,然后插上手机,使用真机running项目(必须是真机),然后command+6,点击Energy Impact

image.png
  • 蓝色表示--合理
  • 黄色--表示程序比较耗电
  • 红色--表示仅仅轻度
    图表中Utilization栏中是表示瞬间耗电情况
    图表中Average栏中,表示平均耗电情况
    图表中Energy Impact中coat(蓝色)表示运行项目代码需要电量,overhead(红色)表示开销,包括CPU的唤起,无线电模组(蓝牙&WiFi),和其他系统资源的调用等。
    影响电量的五个因素,灰色表示有电量消耗,白色表示没有电量消耗
  • CPU:CPU使用率超过20%就会快速耗干电池电量,高效实用CPU,并且当用户出现模糊输入时快速做出不做事情的反应。
  • Network:网络活动会唤起需要长时间周期性供电的无线电模组,可以分批次进行网络请求,来降低开销
  • Location:精密&高频的定位会增加开销,需要按需使用。
  • GPU:图形处理器(显卡的处理器),乱使用GPU会导致交互差,并且降低电池寿命。
  • Background:后台状态APP仍会消耗电量,APP要按需执行后台操作,并使用延迟APIs来保证系统运算高效执行,另外,在APP进入后台状态时,立即减少动作,并且通知系统一次这些动作已经完成。

3、使用Instrument的Energy Log

第一步:打开手机设置,点击“开发者”


image.png

第二步:点击Logging


image.png

第三步:勾选Energy,并点击startRecording
image.png

第四步:运行需要测试的APP(确保手机消耗的是手机自身的电池),运行3-5分钟,在进入手机设置点击stopRecording


image.png

第五步:使用Xcode,把手机和Xcode相连,并打开instruments中的Energy Log,点击工具栏中import Logged Data from Device
image.png

第六步:得到了电池损耗日志
  • Energy Usage Level的值(0--20),值越大表示越耗电
  • CPU Activity表示CPU各种活动


    image.png

耗电量优化

一、代码层面

1、合理使用NSDateFormatter和NSCalendar这种高开销对象

  • 性能测试表明,NSDateormatter的性能瓶颈是由于NSData格式到NSString格式的转化,所以把NSDateFormatter创建单例意义不大,推荐的做法是。把最常用到的日期格式做缓存。
static NSDateFormatter *cachedDateFormatter = nil;

+ (NSDateFormatter *)cachedDateFormatter {

if (!dateFormatter) {

dateFormatter = [[NSDateFormatter alloc] init];


[dateFormatter setDateFormat: @“YYYY-MM-dd HH:mm:ss”];

}

return dateFormatter;

}

2、不要频繁的刷新页面,能刷新1行cell最好只刷新一行,尽量不要使用reloadData。

3、选择正确的集合

  • NSArray,使用index来查找很快(插入和删除很慢)
  • 字典,使用键来查找很快
  • NSSets是无序的,用键查找很快,插入/删除很快

4、少用运算获得圆角,不论view.maskToBounds还是layer.clipToBounds都会有很大的资源开销,必须要用圆角的话,不如把图片本身做成圆角

5、懒加载,不要一次性创建所有的subview,而是需要时才创建

6、重用

  • 可以模仿UITableview和UICollectionView,不要一次性创建所有的subview,而是需要时才创建,完成了实名,把他放入到一个可重用集合中。

7、图片处理

  • 图片与imageView相同大小,避免多余运算
  • 可以使用整副的图片,增加应用体积,但是节省CPU
  • 可调大小的图片,可以省去一些不必要的空间
  • CALayer,CoreGraphics,甚至OpenGL来绘制,,消耗CPU

8、cache,cache,cache(缓存所有需要的)

  • 服务器相应结果的缓存(图片)
  • 复杂计算结果的缓存(UITableview的行高)

9、尽量少用透明透明或半透明,会产生额外的运算

10、使用ARC减少内存食物,dealloc需要重写并对属性置为nil

11、避免庞大的xib,storyBoard,尽量使用纯代码开发

CPU层面

1、Timer的时间间隔不宜太短,满足需求即可

2、线程适量,不宜过多,不要阻塞主线程

3、优化算法,减少循环次数

4、定位和蓝牙按需取用,定位之后要关闭或降低定位频率

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,319评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,801评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,567评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,156评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,019评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,090评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,500评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,192评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,474评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,566评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,338评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,212评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,572评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,890评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,169评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,478评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,661评论 2 335

推荐阅读更多精彩内容

  • 耗电量检测 1.进入手机"设置" -> "电池",可以直观的看出来手机应用的耗电情况. 2.使用xcode打开你的...
    陳俊峰阅读 34,149评论 12 116
  • 资本需求推动开发轮子。上个月,接收到用户反馈,用着我们的 App,尤其是物流模块的司机端耗电量特别大,看下有...
    Maxdon阅读 12,624评论 6 24
  • 使用xcode打开你的工程,然后插上手机,使用真机running项目(必须是真机),然后comand + 6,点击...
    lltree阅读 5,471评论 0 28
  • 一、电量消耗理论与分析 写出耗电量低的应用的关键是要透彻理解它的理论以及全部过程。下面将对电量消耗的相关理论知识进...
    既心阅读 1,133评论 0 0
  • 今天浅略地学习了一下新闻发言人所应具备的基本素质。 新闻发言人代表着身后的组织集体,作为公众人物暴...
    考拉的桉树呢阅读 764评论 0 0