提到iOS后台,很多人会提到“墓碑机制”。但这个说法太过于“笼统”(比如不同机型或者用户会遇到不同的情况)
所以,下面得按实际的情况来聊这个话题:
首先,App进入后台时,系统会给App几秒钟继续保持运行状态,App需要在这几秒钟内主动释放资源。
⬆️说得直白一些就是:
苹果对于提升iPhone的内存容量是很保守的,所以苹果要求第三方App在进入后台时主动释放内存,不然当系统内存不足时,后台内存占用较高的App会优先被干掉。
虽然机制是好的,但是第三方App耍流氓的话,用尽各种手段占用系统内存,所以内存始终是不够用的,也就是频繁杀后台/杀后台严重。
对此呢,苹果也不是没有措施:
1. 不单单是后台,当内存不足时,系统也会要求前台App释放掉一些资源。
2. 如果App想要在后台保持:下载和上传行为的话,那就得接入NSURLSession。
3. 对于VOIP、音/视频等应用,系统是允许在后台继续刷新的,但前提是开启了【后台App刷新】
4.统一的推送机制:APNS。
5.使用支持高刷的iPhone的用户们,你们可能很早就发现了,当App无响应或者停留在某App页面,此时却专注于做其他事情时,前台会变得不活跃,并且降低自刷新的频率。
5.其他的我没有深入了解的管理措施。
题外话:
有人可能问:“后台预览卡片的存在意义是什么?”
答:“1.给用户可以快速切换和预览其他App提供一种交互方式。
2.当App崩溃时,提供上滑结束该App进程的操作”。
但是,我要说但是了,第三方App厂商耍起流氓来,以上的种种措施,可能治标但不治本:
通过苹果官方开发工具Xcode,检测iPhone的第三方App的内存占用情况来看,首先系统会占用一点内存(系统服务及相关组件)
打开多个常用的国内App(不是歧视哈) 切换至二级页面或者来回切换一下后台等等,内存的占用情况直线飙升,在这种情况下,由于多个国内App的“轮番袭击”之下,系统内存很快消耗了一大半,自然而然地触发了iOS的内存管理机制,也就是前面所说的几种措施。
iPhone用户应对这种“流氓App”,所能做的只能是老生常谈:
一、选择性地给予App通知权限和其他权限(比如定位和相机等)。
二、选择性地给予App【后台App刷新】权限。
三、当你不怎么使用App时,可以开启【低电量模式】 作用并非省电,而是限制App在后台及前台的各种行为活动。
四、尽可能地不更新第三方App,倒不是绝对的,因为后续的更新,说不准会带来更糟糕的优化现象。
结尾:可能不严谨,若有不足之处欢迎大佬指出。