iOS 前后台机制以及后台唤醒机制

前台机制

按照苹果的要求,一个APP在完成相应的操作后,应该及时释放或停止对硬件或系统功能的控制。比如,一个APP需要根据不同的城市显示不同的首页内容,那么应该在获取到手机的当前城市后,主动停止定位。

后台机制

iOS的后台机制共有三种:

Background Tasks(后台任务):APP在前台时启动某项任务,然后在未结束之前突然切换到了后台,那么APP可以在切换回调里使用某些API继续向系统请求一些时间来继续完成这个任务;完成之后通知系统,之后系统会将APP挂起。

Downloading(下载):在后台启动从网络下载文件的任务。对于文件下载,iOS有专门的机制。

Specific Background Tasks(特殊后台任务):应用需要在后台一直执行代码,长时间运行。

先说第一种后台任务,其实就是一个APP刚退到后台时,可以向系统申请一段时间(一般几十秒)来处理一些任务,等任务处理完成再被系统挂起。比如一个地图软件,下载离线地图后,正在安装,用户此时按了Home键,那就可以向系统申请一段时间等安装完成后,再挂起。如果耗时超过系统限制,会被强制清理。

第二种后台下载,必须使用iOS指定的机制才可以,那就是NSURLSession来创建后台下载,即使你的APP已经进入后台,或被系统杀掉了,当下载完成时,系统会唤醒APP来处理下载好的文件。很多杂志类的应用会有这种功能。

第三种特殊后台情况比较多了:

1. 需要在后台播放音频。如音乐播放。会一直运行;

2. 需要在后台录音;会一直运行;

3. 在后台也需要不断通知用户位置变动的;比如导航APP会一直在后台运行,但地理围栏APP只会在进入和退出指定位置时唤醒APP;

4. 支持VoIP电话的,如Skype网络电话;会在有电话时被系统唤醒;

5. 需要在后台有规律的下载和处理网络内容的;会在指定时间或网络条件下被系统唤醒;

6. 在后台有规律的从其他外设(第三方配件)获取并更新数据的;会在收到配件消息时被系统唤醒

后台唤醒注意事项

还需要注意的是,那些被系统后台唤醒的app并不是无限制的,大部分情况下被唤醒后只有10秒时间来处理任务,超时未完成处理会被系统强制挂起。

iOS为了控制后台任务,使用了AI技术,依靠人工智能来判断一个app应不应该被唤醒,唤醒频率是多少。已经不是你的app想要唤醒就能唤醒的了,如果手机电量不足或者被唤醒后你的app没有联网存取一些数据,或者总是超时被强制结束,那就不会再被唤醒。

还需要注意的是,绝大多数情况下,系统不会重启被用户手动强制关闭的 APP,但在 iOS 8 之后, location apps (地理围栏等)是个例外。其他的所有被用户手动强制关闭的APP 都不会被系统主动唤起,直到用户再次主动启动这个 APP,或者手机重启并在用户输入了解锁密码之后才会恢复机制。

上架审核

苹果对后台功能要求很严格,要求开发能不用后台就不要用。

如果一定要用后台功能,需要给出说明和解释,让审核人员清楚地知道,app的哪个功能用到了后台模式。尤其是后台定位功能,因为涉及用户隐私,审核非常严格。

常用软件是怎么做的

绝大部分软件是遵守苹果开发规范的,但是还是有一些app由于设计不良或出现bug,导致耗电量很大:

常见的是在进入后台时,或在前台但屏幕熄灭时,未能及时停止某些耗电操作(比如下载和定位),导致耗电。

app为了追求动态化使用了大量web技术,也会导致耗电增大。

后台存取(后台应用刷新)过于频繁,耗电增大。比如在系统设置界面,可以看到微信有个后台应用刷新开关,如果打开这个开关,那么微信在收到新消息推送后,在后台就可以更新消息,直接打开微信就能看到了;如果关闭这个开关,收到新消息后,可以在推送栏看到消息,但打开微信后还需要联网重新下载完整消息。

另外还有一些软件,故意钻空子,利用技术手段作弊,强行运行在后台,达到某些目的。尤其在iOS10之前的系统上很常见。

后台作弊方式

由于iOS后台机制的限制,以前要想在后台运行,可以申请后台权限后,模仿音乐播放器,在后台循环播放一段无声的音乐,这样就可以一直运行在后台,直到内存不足被系统杀死。

利用后台存取(后台应用刷新)功能。正常情况下,声明了这个类型之后,系统在你的 APP 进入后台后,间隔性的给机会将你的 APP 唤醒,唤醒后再通过beginBackgroundTaskWithExpirationHandler:向系统申请一段时间,然后再重复申请一段时间,就可以长时间在后台运行。而且被杀死后还有可能被系统重新唤醒。

但是,现在iOS10和iOS11之后,这些方法也很难骗过审核人员和iOS系统的后台唤醒机制了。

iOS

ios 后台唤醒应用_iOS 前后台机制以及后台唤醒机制【个人学习】相关推荐

  1. ios沙箱模式开启_iOS我眼中的沙盒机制

    一.简介 1.1 概念:每个iOS应用都有自己的应用沙盒,应用沙盒就是文件系统目录. 1.2 核心:sandbox对应用程序执行各种操作的权限限制 . 1.3 特点: 每个应用程序的活动范围都限定在自 ...

  2. ios 后台唤醒应用_iOS 后台运行机制

    很多使用iphone的孩纸,可能并不了解iphone的后台运行机制.今天转载一篇网友的文章,来扫盲一下. 标注来源:http://blog.csdn.net/enuola/article/detail ...

  3. 转:iOS应用程序生命周期(前后台切换,应用的各种状态)详解

    iOS应用程序生命周期(前后台切换,应用的各种状态)详解 分类: iOS开发进阶2012-10-08 15:35 42691人阅读 评论(30) 收藏 举报 iosapplication任务anima ...

  4. Android后台Kill(二):ActivityManagerService与App现场恢复机制

    本篇是Android后台杀死系列的第二篇,主要讲解ActivityMangerService是如何恢复被后台杀死的进程的(基于4.3 ),在开篇 FragmentActivity及PhoneWindo ...

  5. 20180828 手机助手后台唤醒和Doze模式下WiFi密集唤醒

    1.手机助手后台唤醒现象 com.qihoo.appstore 和 com.tencent.android 主要是通过JobScheduler 和 SyncManager 事件进行后台唤醒,因为之前网 ...

  6. IOS 后台挂起程序 当程序到后台后,继续完成Long Running Task 任务

    IOS 后台挂起程序 当程序到后台后,继续完成Long-Running Task 任务 www.douban.com/note/375127- http://lqzit.iteye.com/blog/ ...

  7. ios 启用 证书_如何在iOS 10中启用就寝提醒,轻柔的唤醒和睡眠跟踪

    ios 启用 证书 If you have trouble regularly getting a full night's sleep, the new Bedtime feature in iOS ...

  8. java ios des加密解密_IOS、java支持DES加密

    转载请注明博客地址:http://blog.csdn.net/mengxiangyue/article/details/40015727 近期在考虑数据加密方面的需求,所以对数据加密简单的看了一下,当 ...

  9. Java高并发编程(二):Java并发机制的底层实现机制

    Java代码在编译后会变成Java字节码,字节码在之后被类加载机制加载到JVM中,JVM执行字节码,最终需要转换为汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实现和CPU的指令. ...

  10. 【星球知识卡片】注意力机制发展如何了,如何学习它在各类任务中的应用?...

    大家好,欢迎来到我们的星球知识小卡片专栏,本期给大家分享注意力机制的发展和应用. 作者&编辑 | 言有三 1 注意力机制的作用 注意力机制的作用就是找到真正感兴趣的区域,加以处理,使其更好地完 ...

最新文章

  1. 04: 用户授权及撤销 、 数据备份与恢复 、 MySQL管理工具
  2. 性能分析--视图优化
  3. Linux命令如何显示光标
  4. SpringMVC+RestFul详细示例实战教程
  5. C# 系统应用之调用SDelete程序粉碎文件及基础原理知识
  6. 收藏老外的jquery web 按钮插件
  7. HTML5 API详解(11):Cache 应用程序缓存,这下离线也可以玩了
  8. JAVA 电子书下载地址
  9. Win环境下的Axure汉化
  10. pgz-sbv-gf极狐低代码平台发布
  11. 【洛谷试炼场】普及练习场——字符串处理
  12. 《淘宝技术这十年》简评
  13. NetWare网络操作系统
  14. codelite编译器配置
  15. ff15测试软件翻译,最终幻想15数据详细分析 FF15详细的数值参数测试
  16. 网页左右两边加广告横幅
  17. Windows 系统查找快捷键冲突
  18. 分析|什么是物联网卡
  19. 湖南工业大学教务系统爬虫(模拟登陆篇)
  20. 5项有助于提高 Google 关键字排名的措施

热门文章

  1. Linux 字体库复制安装
  2. 计算机Word2010在线做题,Word2010题库(答案)试题.doc
  3. 基于NoSQL的租房(链家)信息数据分析(附代码)
  4. 小米笔记本桌面计算机图标,小米笔记本桌面锁定怎么解除
  5. java后台提示信息弹出框
  6. Linux系统——sqlist数据库
  7. RSA算法和SM2算法对比
  8. 【笔记】运筹(上)——Rita_Aloha
  9. 使用影子系统后win10导致的蓝屏解决办法
  10. PLSQL导入导出表数据、表结构