iOS App的状态

Refer: App
States and Multitasking

iOS设备的系统资源有限,所以App在前台运行和在后台运行的时候是有区别的。为了节省电池寿命和用户体验,App在后台运行的时候,有一些功能会被操作系统限制。

当App在前台运行的时候,可以处理系统发送的touch事件。UIKit基础架构已经做了大部分的工作用来把事件分发到自定义的对象上,开发者只需要重写一些相应的方法。

在App的开发过程中建议遵守的方针:

(Required)对状态的切换做出适当的相应,否则可能会造成数据丢失和糟糕的用户体验。

(Required)当App切换到后台运行模式时,要确保App调整一些行为。

(Recommended)注册所有的App状态改变的消息通知。当App挂起的时候,操作系统会把关键的消息通知加入队列,并在App恢复运行的时候分发给App。可以利用这些通知让App平滑的切换到运行状态。

(Optional)如果App要在后台做一些实际的工作,可以向操作系统请求相应的权限来继续运行。

管理App的状态切换

App有以下5种状态,操作系统运行过程中,一些中断操作例如按了HOME键,或者来电了,这时候都会切换当前运行的App的状态。

Not Running  App没有被打开,或者在运行过程中被操作系统终止掉了

Inactive    App在前台运行,但是暂时没有接收到任何事件。这个状态通常比较短暂,很快会被切换到另外的状态

Active     App在前台运行,并且接收到事件。App通常运行在这种状态下

Background  App在后台运行并执行代码,App被挂起的时候会短暂的停留在这种状态下,App可以向系统请求更长的时间保持这种状态

Suspended  App切换到后台,不执行任何代码。操作系统在不做任何通知的前提下自动把App切换到这种状态。App在挂起的时候,还会驻留在内存中,当空闲内存过低的时候,操作系统可能会把该App从内存中清理掉。

App状态切换过程中,以下事件会被调用

application:willFinishLaunchingWithOptions:   应App刚打开的时候调用

application:didFinishLaunchingWithOptions:  App被展示之前调用该事件作一些初始化工作

applicationDidBecomeActive:  App被切换到前台状态的预处理

applicationWillResignActive:   App从前台状态切换到其他状态时执行

applicationDidEnterBackground:   App切换到后台,并且可能随时被挂起

applicationWillEnterForeground:   App从后台切换到前台,但是还没有Active

applicationWillTerminate:   App被终止,在App被挂起的时候会调用该方法

iOS App的状态,布布扣,bubuko.com

时间: 2024-10-29 10:47:36

iOS App的状态的相关文章

ios app在itunesConnect里面的几种状态

原地址:http://blog.csdn.net/dean19900504/article/details/8164734 Waiting for Upload (Yellow) Appears when you’ve completed entering your metadata, however, you have not finished uploading your binary or have chosen to upload your binary at a later time.

[iOS]App上架流程[利用Archive进行上传]

今天给大家带来项目如何上架的教程 准备: 1. 一个开发者账号(需要交过钱的,??好黑) 2. 一个做完的项目 检查: 1. 你的Xcode必须是正式版,不可以是beta版本(不能上传项目) 2. 请确认你的Xcode是从App Store或者从开发者网站下的Xcode安装,而不是非法获取的安装包,因为可能有Ghost.如何检查? 开始吧. 一.生成发布证书(证书的作用:类似于驾照,证明你的身份可以进行开发者一些操作) 打开https://developer.apple.com 点击右上角开发者

学习 About iOS App Programming 第三天

-------State Preservation and Restoration 即使我们的app能支持后台运行,但它也不能一直在后台运行,有一些情况,系统也许会需要终止app,为了释放内存给在前台运行的app.但是用户不关心app是不是被关闭,用户只知道这个app应用就是这个地方暂停了,当再次起来时应该就在上一次退出的地方.这样用户能继续进行他上次没有完成的任务.因此UIKit实现了这种功能. UIKit的状态保存系统提供了一个简单同时比较精准的基础技术对于保存和恢复app viewcont

图文讲解:iOS App提交流程

原地址:http://www.toceansoft.com/ios/3287.jhtml 摘要: 由于苹果的机制,在非越狱机器上安装应用必须通过官方的App Store,开发者开发好应用后上传App Store,也需要通过审核等环节.AppCan作为一个跨主流平台的一个开发平台,也对ipa包上传App Store作了支持.本文从三个流程来介绍如何实现AppCan在线编译出ipa包,以及上传到苹果App Store. 一.证书的导出 1.1.前期工作 首先你需要有一个苹果的开发者帐号,一个Mac系

iOS APP 上传

原地址:http://www.cnblogs.com/uvsjoh/archive/2012/11/14/2769739.html 流程:1 开发好要发布的程序 -- 需要在程序中包含符合要求规格的icon文件https://developer.apple.com/library/ios/#qa/qa2010/qa1686.html2 iTune上注册APP,这一步需要Apple developer IDhttps://developer.apple.com/devcenter/ios/inde

iOS App 的运行时

App被启动时,从非运行状态到短暂的非激活状态,然后切换到运行状态或者后台运行状态.在启动过程中,操作系统对App创建了一个主线程来调用main方法. main方法是App的入口,用来调用UIKit框架和做一些程序运行前的预处理.XCode项目模板自动生成了mian方法,调用UIApplicationMain iOS也有自动内存管理,ARC(Automatic Refenerce Counting),@autoreleasepool中的代码的内存管理被ARC托管 App在后台运行时,会监听一些后

用Model-View-ViewModel构建iOS App(转)

转载自 Model-View-ViewModel for iOS [译] 如果你已经开发一段时间的iOS应用,你一定听说过Model-View-Controller, 即MVC.MVC是构建iOS app的标准模式.然而,最近我已经越来越厌倦MVC的一些缺点.在本文,我将重温一下MVC是什么,详述它的缺点,并且告诉你一个新的方式来架构你的app:Model-View-ViewModel.拿出你的流行语bingo card(宾果卡,一种游戏卡片-译者注),因为我们即将进行一次范式转变. Model

最新Xcode7.x环境下上架iOS App到AppStore 完整流程

最新Xcode7.x环境下上架iOS App到AppStore 流程  part 1 前言部分 之前App要上架遇到些问题到网上搜上架教程发现都是一些老的版本的教程 ,目前iTunesConnect 都已经迭代好几个版本了和之前的 界面风格还是有很大的差别的,后面自己折腾了好久才终于把自己的App上架,所以一直想写个最新(Xcode7.x~OS X 10.11)的 App上架教程.  本文使用工具为xcode7.2   mac  os系统为10.11 captain 1.官网地址 Apple D

怎样判断iOS App是通过哪种途径启动的?

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions说明:当应用程序启动时执行,应用程序启动入口.只在应用程序启动时执行一次.application参数用来获取应用程序的状态.变量等,值得注意的是字典参数:(NSDictionary *)launchOptions,该参数存储程序启动的原因.1.若用户直接启动,lauchOptions