※ 引述《cs100128 (passerby)》之铭言:
: 以前用iPhone都没有在关多工
: 这就是iPhone的好处吧
: 不用特地去关也不用像安卓一样要一键清除背景程式
: 因为它就是会自动帮你停止
: 而且这样也比较不浪费电
: 因为不需要再重启一次app
: 但现在.....
: 我已经关了app背景重整了
: fb、line、instagram等还是需要手动清除多工
: 不然背景还是一直跑
: 那这样还有意义吗?
: ps.没有要战的意思只是真的想抱怨也想找方法改善这样的情况,可又不想jb,真的很不
: 习惯变成这样呀
先得搞清楚要解决的是什么问题
多数人谈清除多工,都是想解决耗电问题
清除多工是手段,不应该是目的
一直在想要怎样才能让所有程式都不要在背景跑
并不是解决耗电问题的最好办法
首先应该厘清耗电的原因
再来聊点 iOS 多工的内涵,因为它真的有点太复杂了
以致把所有程式清除多工这样简单的思维,并非最佳解
就像我们写程式的要调效能,不做 profiling 是没有意义的
通常只要针对前几名耗电来源做处理就足够了
iOS 9 之后,设定 - 电池 下面的电池用量
就可以看到每个 App 耗电比例和来源
通常智慧型手机最耗电的前三名来源
不外乎萤幕、行动网络、GPS(当然还有 CPU 就不说了)
萤幕:你一打开手机就在耗电了
这没什么好说,顶多调低亮度
行动网络:比 Wi-Fi 耗电
这在 设定 - 行动网络 下面也看得到每个 app 数据用量
分别关掉就可以直接断掉它的来源
但是对于定位 app 则可能因为只剩 GPS 可用,反而让定位更耗电
GPS:其实保持行动网络和 Wi-Fi 开启,就能大幅减少用上更耗电的 GPS
这在 设定 - 隐私权 - 定位服务 下面也看得到每个 app 的权限
特别注意紫色定位图示以及权限为“永远”的 app 就够了
了解并处理前几名耗电的 App 就差不多了
再多搞都很事倍功半
因为你真的要搞清楚有多少东西会在背景耗电?
App Programming Guide for iOS - Background Execution
http://0rz.tw/tA0tm
在 App 端能做的背景服务就这些,没了
一般人从字面上理解的“背景 App 重新整理”
其实就只占其中的一项 fetch 而已,是依使用频率更新资料用的
跟多工接口占著 RAM 没有关系
来举个例子
先前 Facebook iOS App 被爆料在电池用量占据了大量的背景时间
http://i.imgur.com/iYcVQM0.png
(原文:https://goo.gl/2Jxw3o )
当然就一堆人来猜了是上面提及的哪一项背景服务
滥用网络电话?滥用背景播放?(背景有“音讯”项目佐证)
滥用无声推播?(你看这大部分人都不知道吧)
最后 Facebook 更新 app,工程主管也出来回应了
https://www.facebook.com/arig/posts/10105815276466163
简单讲就是网络层有些写烂了,
而背景播放就只是占著没干啥事,会修改为没在用就移除
够复杂了吧
但上面说的这些 app 的背景服务
有的会让使用者看到 ex. 背景播放、定位、网络电话等等
剩下的发生频率或运行时间,都被 iOS 中央牢牢管控
当然,手动从多工接口滑掉 app 的话
这些背景服务也都会被关掉
所以还是全部手动关掉最好?
那你考虑过程式从储存空间重新启动比从 RAM 直接回复还耗电吗?
没跑背景服务的话,那些占著 RAM 的背景 app 也耗不到 CPU 资源
再来说系统层
“低耗电模式”其实也只暂停部分功能
app 的通知都从 iOS 统一控管,可以关
动态背景图片,可以关
辅助使用 - 动态效果,可以关
定位服务拉到最下面,有个“系统服务”也不时偷偷在背景定位(而且默认不会显示!)
可是你去研究究竟还有哪些占据背景没有太大意义
绝大多数很有可能不太耗电,因为 iOS 实在掌控了太多东西
如上所述,抓确实耗电的前几名出来解决才是事半功倍
现实是工程化的
往往我们以为很科学思维的解法
其实是过度简化而远离现实的