前段时间一直有个别用户反馈 app 耗電快量很快手机发烫。问了下设备信息判断不应该是设备过时的原因,自己手头测试也没有发现什么问题
直到今天,亲眼看到 app 界面反应特别卡顿而且手机发烫确实很严重。最后经过排查发现是跑马灯导致的。
跑马灯使用 UIView
动画实现的由于一直循环,导致控件没有釋放动画一直持续,最后 CPU 占用过多手机耗电快巨大。
下面根据测试用例说明下这个问题测试用例可以在下载。
动画代码的不同会慥成不一样的结果,分情况讨论一下:
-
一般情况下没有什么问题:
-
为了使返回的时候,动画继续进行对代码进行了部分改造:
这样的話,返回的时候动画就不会停止但是,问题也就出现了此时的 app 运行状态如图。
可以看到这时候 CPU 使用率已经超出了负载电量耗费很大,而且 FirstViewController
没有释放掉
-
为了解决以上两种问题,继续对代码进行改造
这时,页面返回时动画能够继续进行FirstViewController
正常释放,CPU 电量使用也正常