iOS 开发高手课
戴铭
前滴滴出行技术专家
42934 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 47 讲
用户故事 (1讲)
iOS 开发高手课
15
15
1.0x
00:00/00:00
登录|注册

18 | 怎么减少 App 电量消耗?

SDWebImage图片加载框架
NSCache
GCD的dispatch_block_create_with_qos_class方法
避免多余计算
多线程CPU使用率检查代码
CPU使用百分比
task_threads函数
获取电量信息代码
batteryMonitoringEnabled
导入文件
WWDC Session 238
苹果公司电量优化指南
I/O操作优化
CPU优化
查看线程信息
排除法
IOKit framework
课后小作业
小结
优化电量
诊断电量问题
获取电量
怎么让你的App更省电?

该思维导图由 AI 生成,仅供参考

你好,我是戴铭。
手机设备电量有限,App 开发时如不注意电量的的消耗,当用户发现你的 App 是耗电大户时,就会毫不犹豫地将其抛弃。所以,每次开发完,我们都需要去检查自己的 App 有没有耗电的问题。
耗电的原因有千万种,如果每次遇到耗电过多的问题,我们都从头查找一番的话,那必然会效率低下。
就比如说,测试同学过来跟你说“某个页面的前一个版本还好好的,这个版本的耗电怎么多了那么多”,那么你首先想到可能就是这个页面有没有开启定位,网络请求是不是频繁,亦或是定时任务时间是不是间隔过小。接下来,你会去查找耗电问题到底是怎么引起的。你去翻代码的时候却发现,这个页面的相关功能在好几个版本中都没改过了。
那么,到底是什么原因使得这一个版本的耗电量突然增加呢?不如就使用排除法吧,你把功能一个个都注释掉,却发现耗电量还是没有减少。这时,你应该怎么办呢?接下来,我就在今天的文章里面和你详细分享一下这个问题的解法吧。
我们首先需要明确的是,只有获取到电量,才能够发现电量问题。所以,我就先从如何获取电量和你讲起。

如何获取电量?

在 iOS 中,IOKit framework 是专门用于跟硬件或内核服务通信的。所以,我们可以通过 IOKit framework 来获取硬件信息,进而获取到电量消耗信息。在使用 IOKit framework 时,你需要:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文详细介绍了如何通过优化App的电量消耗来提升用户体验。作者首先强调了电量消耗对用户体验的重要性,并介绍了在iOS中获取电量信息的方法。随后,作者提出了解决电量问题的方法,包括通过排除法和多线程CPU使用率检查来定位问题并进行代码优化。文章还提到了对CPU和I/O操作进行优化的重要性,以及使用NSCache进行内存缓存来减少I/O操作对电量的消耗。此外,文章还提到了苹果公司的电量优化指南和WWDC Session 238中关于如何编写节能App的主题,为读者提供了更多优化电量的建议和资源。总的来说,本文通过技术性强的代码示例和详细解释,帮助开发者快速了解如何诊断和解决App的电量问题,对于开发者来说具有很高的实用价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《iOS 开发高手课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(17)

  • 最新
  • 精选
  • 月落泉
    smStackOfThread这个方法哪有啊

    作者回复: https://github.com/ming1016/GCDFetchFeed GCDFetchFeed/GCDFetchFeed/GCDFetchFeed/Lib/SMLagMonitor/SMCallStack.m

    2019-05-10
  • 好饿早知道送外卖了
    QOS_CLASS_UTILITY指定block的Qos,是不是和设置队列优先级效果一样?

    作者回复: 是的

    2019-04-30
  • 泽七
    获取电量为什么不用 [[UIDevice currentDevice] batteryLevel] 呢?
    2019-04-20
    40
  • 包罗万象
    iokit已经无法导入了,请问老师这种情况你是怎们处理的?
    2019-05-10
    7
  • 繁星mind
    电量优化 https://www.jianshu.com/p/bd2c1ce5c02a
    2019-11-19
    3
  • cp_kong
    IOKit Frameworks 目前在iOS项目中无法导入了,要自己新建一个mac项目,然后从那个项目导入,再拷到iOS项目中
    2019-05-15
    1
    3
  • cocoakc
    IOKit framework 是Mac 的框架?参考的这个吗?https://blog.csdn.net/uxyheaven/article/details/38167509
    2019-04-23
    3
  • 黄昏
    cpu使用量确实是耗电的重大原因。不合理的动画可能导致cpu暴涨,电量损耗巨大。
    2019-04-20
    1
  • 王木公
    有个问题可能没有讲到,如何发现电量消耗太大的问题?参考指标、阈值有什么?一个App开发、测试、发布过程中,在哪一步去监控或排查有无耗电量的问题?
    2022-11-08归属地:北京
  • 星辰
    老师你好,IOKit中拿到的电池电量与UIDevice中获取到的电池电量相比谁的精度更高呢
    2019-11-20
收起评论
显示
设置
留言
17
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部