后台处理

iOS设备的资源有限,没有足够的内存能让很多应用同时运行,电池续航时间也很宝贵,所以让设备把能量用在用户真正关心的活动上是至关重要的,一个后台运行的“忙等”应用能在很短时间耗尽电池电量,但是用户也希望应用能迅速就位,它们希望能够无缝的切换应用,优秀的ios应用给用户的感觉是它们总是在运行,而且运行所需的资源越少越好。

但是很多用户需要的东西不能用感觉来实现,比如用户在运行其他应用的时候能下载文件,像在启动时新闻订阅就能够得到更新,每个ios版本发布后,应用都能获得更多的后台运行权限,ios7 加入了重要的新特性,能让你在后台下载文件,并且在任意时间用静默通知唤醒应用。

从ios4开始,苹果开始支持第三方应用在后台运行受限运行,这延续了苹果不允许第三方应用影响系统性能和浪费系统资源的一贯传统,ios始终以应用而不是以开发者为中心,但是应用应该让用户感觉一直在运行,即使实际上不是这样,应用可能会在挂起状态下没有收到任何警告就终止运行了,但在下次运行时,它再次运行时,它应该让用户感觉与上次退出时没有任何不同,一是不要在加载过程中显示启动画面,二是要在应用进入后台运行时把必要的状态保存下来,以便应用终止之后再次唤醒时能够恢复用户离开时的状态。

在进入后台运行时,减少应用的内存占用是非常重要的,这样也可以将唤醒应用所需的时间降到最少。如果丢弃缓存信息,那么唤醒应用跟重启应用所需的时间差不多,也就没有必要挂起应用了,一定要想清楚可以丢弃哪些对象,以及需要多少时间重新创建这些对象,每一项操作都会消耗电量,即使它们不会使应用明显变慢,也一定要避免不必要的处理。

应用挂起后无法收到内存警告,如果内存占用量比较大,那么系统很可能会在出现内存压力时终止应用,而你对此毫无办法,处理这个问题时,NSCache和NSPurgeableData能够大显身手,NSPurgeableData使一个NSData对象,可以将它编辑为当前正在使用或者可清除,如果把它保存到NSCache对象中并使用endContentAccess将其标记为可清除,ios会在遇到内存压力之前一直保存它,遇到内存压力时,ios就会丢弃这些数据,即使这时应用处于挂起状态,这样一来,用户每次短暂离开又回到应用时,就不需要丢弃这些对象然后重新创建,但必要时仍然会丢弃这些数据。

应用进入后台运行之后,许多框架数据都是自动管理的,使用imageNamed:方法加载的图片数据会被自动丢弃,再次使用时会重新从磁盘加载,这个规则有一个重大的例外:UIImageView不会丢弃数据,因而会占用大量的内存,如果UIImageView中有非常大的图片,通畅应该在进入后台运行之前把它删除。

在instrument中可以看大两种内存:脏内存,常驻内存进入后台运行时,不能被ios自动回收的内存就是脏内存,常驻内存就是当前使用的所有内存,在不同的情况下,这两种内存都很重要,减少内存的占用量可以降低应用在后台被终止的可能性,应优先考虑减少脏内存占用量,当应用不在前台运行时,应该尽可能减少资源消耗,NSCache和 NSPurgeableData可以用来减少脏内存占用,减少常驻内存可以防止应用在前台运行时收到内存过低警告。

内存很重要,但并不是唯一的资源,应该避免过多的网络活动,磁盘访问,以及其他任何浪费电量的操作。在后台运行时,有些操作是禁止的,最重要的OpenGL调用,应用在后台运行时必须停止更新OpenGL视图,还有一个微妙的问题就是应用终止。

时间: 2024-08-25 06:43:27

后台处理的相关文章

C#开发微信门户及应用(47) - 整合Web API、微信后台管理及前端微信小程序的应用方案

在微信开发中,我一直强调需要建立一个比较统一的Web API接口体系,以便实现数据的集中化,这样我们在常规的Web业务系统,Winform业务系统.微信应用.微信小程序.APP等方面,都可以直接调用基于JSON数据格式的Web API接口,在我之前的几篇随笔中,对这方面都有一定的介绍,本篇继续这个主题,细致深入的阐述如何在接口和源码的基础上整合Web API.微信后台管理及前端微信小程序的应用方案. 1.基于Web API的微信开发框架 首先我们各个业务模块,都应该围绕着Web API进行展开,

微信小程序管理后台介绍

微信小程序的管理后台,每次进入都需要扫码,还是特别不爽,现在微信小程序还没正式发布,很多人都还没看到管理后台,这里抢先发布出来 ------------------------------------------------------------ http://www.cnblogs.com/likwo/p/6057258.html 好推小程序统计:https://weixin.hotapp.cn关键指标分析推广效果,一行代码接入微信登录 ---------------------------

如何将zTree选中节点传递给后台

获取zTree选中节点 1 <body> 2 3 <script type="text/javascript"> 4 var setting = { 5 view: { 6 dblClickExpand: false, 7 showLine: true, 8 }, 9 check: { 10 enable: true, //必选项 11 chkboxType: { "Y": "p", "N": &quo

PHP.48-TP框架商城应用实例-后台23-权限管理-权限验证

权限验证 1.登录控制器 2.通过tp验证码类生成验证码图片 3.在管理员模型增加登录验证规则 4.后台中所有的控制器必须先登录才能访问 思路:在访问任何一个控制器之前都判断一个session即可,=>增加一个父控制器验证Session 让所有后台的控制器[除了Login控制器之外的]都继承自这个控制器 5.在管理员访问后台的任何一个页面之前先到数据库中查看当前管理员所在的角色是否有权限访问这个页面 在权限模型中增加此检查方法,在父类登录控制器中调用 6.后台左侧只显示当前管理员有权限访问的按钮

java SSM框架 多数据源 代码生成器 websocket即时通讯 shiro redis 后台框架源码

获取[下载地址]   QQ: 313596790官网 http://www.fhadmin.org/A 调用摄像头拍照,自定义裁剪编辑头像,头像图片色度调节B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,快速开发利器)+快速表单构建器 freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类,service等完整模块C 集成阿里巴巴数据库连接池druid  数据库连接池  阿里巴巴的 druid.Druid在监控.可扩展性.稳定性和性能方面都

页面与后台传递中文乱码问题(java乱码)

1.前台中文传递到后台乱码. 前台不须要处理, 系统一般都会默认把中文转化为ISO-8859-1类型. 仅仅需在后台接受数据是处理 Str为前台传过来的中文字符串: String inputer = new String( Str.getBytes("ISO-8859-1") , "GB2312"); 2.前台不仅包括中文.并且包括特殊字符,假设仅仅在后台转码,比較困难.採用前台转码,那么就採用后台解码的方式处理 var theid = encodeURI(enco

JSON字符串-赋张最初接触后台从map转json的方法

**************************************** json数组: ****************************************************** 后台传回前台 和 前台传回后台的都是json字符串 ****************************************************** 将java中的map,list等转成json格式 (map转成JSONObject   list转成JSONArray) 前者的类

小程序砸金蛋、外卖模板上线啦,快到酷客多商户后台更新!

最近,微信小程序官方发文不断,又开放十几项接口,逐步给企业主带来跟多福利.于此同时,酷客多研发团队也保持着一贯的研发和版本迭代速度,此次版本主要新增幸运砸金蛋.外卖模板.意见反馈三个模块 1.新增幸运砸金蛋,大奖中不停 通过此功能可增加平台趣味性,增强用户粘性,刺激用户二次消费,是与用户互动的一大利器. 2新增外卖模板,外卖送起来 此模板是餐饮企业的福利,可在注册或者酷客多商户管理后台直接选择此模板,瞬间让您的小程序首页变的高大上,从此再也不用担心第三方外卖平台高额的佣金和账期了,因为酷客多只提

java 企业网站源码 后台 springmvc SSM 前台 静态化 代码生成器

java 企业网站源码 前后台都有 静态模版引擎, 代码生成器大大提高开发效率 点击:获取地址 QQ 313596790 系统介绍: 1.网站后台采用主流的 SSM 框架 jsp JSTL,网站后台采用freemaker静态化模版引擎生成html 2.因为是生成的html,所以访问速度快,轻便,对服务器负担小 3.网站前端采用主流的相应式布局,支持PC.平板.手机浏览器访问 4.springmvc +spring4.2.5+ mybaits3.3  SSM 普通java web(非maven) 

nobup 与 后台运行命令

1. Linux进程状态:R (TASK_RUNNING),可执行状态&运行状态(在run_queue队列里的状态) 2. Linux进程状态:S (TASK_INTERRUPTIBLE),可中断的睡眠状态, 可处理signal 3. Linux进程状态:D (TASK_UNINTERRUPTIBLE),不可中断的睡眠状态, 可处理signal, 有延迟 4. Linux进程状态:T (TASK_STOPPED or TASK_TRACED),暂停状态或跟踪状态, 不可处理signal, 因为根