App在后台运行的思与做

前言:

当一个应用程序在后台运行时,它在屏幕上是不可见的。当用户启动另一个应用程序或返回到主屏幕时,应用程序从前台切换到后台。当然,应用程序也可以在后台启动或恢复,以处理特定的事件。

失活的操作

当一个正在前台的应用程序移动到后台时,UIKit首先调用applicationWillResignActive:方法来禁用应用程序(使App失活)。当App失活,会做出以下几点操作: 1、将用户数据保存到磁盘并关闭任何打开的文件:

应用程序被终止时,始终保存用户数据。同样用户锁住设备时,关闭文件。

2、只做对保存用户数据至关重要的工作:

暂停调度队列和操作队列,不安排任何新的任务执行。

3、让任何正在活跃的计时器失效。(不做处理的话,倒计时退出时为35秒,几秒后回来,还是35秒,不信试试)

4、暂停游戏。

反正,失活会阻止用户与应用程序交互。

切换到后台执行

对于正在移动到后台的前台应用程序,UIKit通过调用applicationDidEnterBackground:的方法来关闭。这个方法表明您的应用程序现在正在后台运行。当切换到后台时,您可以在应用程序挂起之前采取一些额外的步骤: 1、清理你的应用程序的用户界面。

隐藏敏感信息,排除警报和其他临时接口,并准备您的接口以获取其快照。

2、释放系统资源共享。

前台应用程序优先使用共享服务,如相机或系统数据库。当应用程序被挂起时,如果应用程序持有任何共享资源,系统就会终止它。

3、释放图像、媒体文件和临时对象。

移除所有有关大内存的对象(这些对象可以轻松地从磁盘重新创建或重新加载)。系统自动清空系统管理的缓存,包括由NSCache对象和采用NSDiscardableContent协议的对象管理的数据。

applicationDidEnterBackground:调用时的某个时刻,UIKit获取应用程序当前界面的快照。系统在App switcher中使用这个快照图像,当你的应用返回到前台时,它可以替代你的应用的启动屏幕。在app delegate 方法中,通过删除用户界面中的任何敏感数据来保护用户的隐私。当应用程序返回前台时,您可以决定是立即显示数据,还是先请求用户验证。

而在后台,App必须尽可能占用小一点的内存。如果应用程序管理大量数据,可能需要将数据写到磁盘并从内存中删除。例如,如果应用程序操纵图像数据,将数据保存到磁盘,以便释放数据缓冲区。消耗大量内存的后台应用程序比占用少量内存的应用程序先终止。

--文中内容总结归纳于官方文档

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏芋道源码1024

点我达分布式任务调度系统-DaJob

随着互联网的发展,应用服务中的定时任务数量日益增加,常规的垂直应用架构已无法应对,分布式服务架构势在必行。同时,也迫切需要一个分布式任务调度系统来管理分...

50520
来自专栏LanceToBigData

Maven(六)之依赖管理

前面讲了maven一些关于Maven的简单知识,今天我给大家分享一些Maven的依赖管理。我相信用过maven的人都知道,它很重要的功能就是通过依赖来添加jar...

21080
来自专栏北京马哥教育

出了Linux 故障找不到方法?看大牛简单、朴实的解决思路

本文由马哥教育Linux云计算面授班23期学员推荐,转载自互联网,作者为Lis,Linux资深技术专家,内容略经小编改编和加工,观点跟作者无关,最后感谢作者的辛...

45960
来自专栏用户2442861的专栏

nginx的配置、虚拟主机、负载均衡和反向代理(2)

上一篇中,我仔细了学习了一下nginx的各个模块的详细讲解,基本对它的一个整体有了一个把握。这一篇就来几个实际的例子来看下虚拟主机、负债均衡和反向代理,是如何...

24220
来自专栏小詹同学

GitHub 与 git 笔记 。

其实 GitHub 和 git 的教程网上特别多 ,也很齐全 。写这个笔记出发点在于共享自己的 LeetCode 刷题代码 。所以关于介绍不会特别多 ,主要记录...

12320
来自专栏FreeBuf

如何通过Emond在macOS上实现持久化访问

在这篇文章中,我们会介绍如何通过emond在macOS上实现持久化访问。根据苹果公司的说法,事件监视进程(emond)会“接受来自各种服务的事件,通过一个简单的...

21090
来自专栏Laoqi's Linux运维专列

Nginx+Tomcat实现Web服务器的负载均衡

51860
来自专栏IT可乐

Nginx(四)------nginx 负载均衡

  在上一篇博客我们介绍了 Nginx 一个很重要的功能——代理,包括正向代理和反向代理。这两个代理的核心区别是:正向代理代理的是客户端,而反向代理代理的是服务...

11220
来自专栏维C果糖

详述 Maven 依赖范围及依赖调节原则

当在我们 POM 文件中配置 Maven 依赖的时候,常见的格式如下: <project> ... <dependencies> ...

29670
来自专栏北京马哥教育

Linux 组调度浅析

cgroup 与组调度 linux内核实现了control group功能(cgroup,since linux 2.6.24),可以支持将进程分组,然后按组来...

44840

扫码关注云+社区

领取腾讯云代金券