iOS应用程序生命周期(前后台切换,应用的各种状态)详解
来源:互联网 发布:阿凡达妹妹唱功知乎 编辑:程序博客网 时间:2024/04/30 10:40
iOS的应用程序的生命周期,还有程序是运行在前台还是后台,应用程序各个状态的变换,这些对于开发者来说都是很重要的。 iOS系统的资源是有限的,应用程序在前台和在后台的状态是不一样的。在后台时,程序会受到系统的很多限制,这样可以提高电池的使用和用户体验。
//开发app,我们要遵循apple公司的一些指导原则,原则如下:
1、应用程序的状态
状态如下:
Not running
Inactive
Active
Backgroud
Suspended
下图是程序状态变化图:
各个程序运行状态时代理的回调:
- (BOOL)application:(UIApplication *)application willFinishLaunchingWithO
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOp
- (void)applicationWillResignAct
- (void)applicationDidBecomeActi
- (void)applicationDidEnterBackg
- (void)applicationWillEnterFore
- (void)applicationWillTerminate
- (void)applicationDidFinishLaun
在上面8个方法对应的方法中键入NSLog打印。
现在启动程序看看执行的顺序:
启动程序
lifeCycle[40428:11303] willFinishLaunchingWithO
lifeCycle[40428:11303] didFinishLaunchingWithOp
lifeCycle[40428:11303] applicationDidBecomeActi
按下home键
lifeCycle[40428:11303] applicationWillResignAct
lifeCycle[40428:11303] applicationDidEnterBackg
双击home键,再打开程序
lifeCycle[40428:11303] applicationWillEnterFore
lifeCycle[40428:11303] applicationDidBecomeActi
2、应用程序的生命周期
2.1、加载应用程序进入前台
2.2、加载应用程序进入后台
2.3、关于main函数
main函数是程序启动的入口,在iOS app中,main函数的功能被最小化,它的主要工作都交给了UIKit framework
- #import
-
- int
main( intargc, char*argv[]) - {
-
@autoreleasepool { -
return UIApplicationMain(argc, class]));argv, nil, NSStringFromClass([MyAppDelegate -
} - }
UIApplicationMain函数有四个参数,你不需要改变这些参数值,不过我们也需要理解这些参数和程序是如何开始的
argc 和argv参数包含了系统带过来的启动时间。
另外 UIApplicationMain函数加载了程序主界面的文件。虽然这个函数加载了界面文件,但是没有放到应用程序的windows上,你需要在Delegate的
一个应用程序可以有一个主的storyboard文件或者有一个主的nib文件,但不能同时有两个存在。
如果程序在启动时没有自动加载主要的故事版或nib文件,你可以在application:willFinishLaunchingWithO
3、响应中断
3.1 当一个基于警告式的中断发生时,比如有电话打进来了,这是程序会临时进入inactive状态,这用户可以选择如何处理这个中断,流程如下图:
在iOS5,通知不会把程序变成为激活状态,通知会显示在状态栏上,如果你;拉下状态栏,程序会变成inactive,把状态栏放回去,程序变回active。
按锁屏键也是另外一种程序的中断,当你按下锁屏键,系统屏蔽了所有触摸事件,把app放到了后台,这时app状态是 inactive,并进入后台。
3.2 当有这些中断时,我们的app该怎么办呢?我们应该在applicationWillResignActive:方法中:
- 停止timer 和其他周期性的任务
- 停止任何正在运行的请求
- 暂停视频的播放
- 如果是游戏那就暂停它
- 减少OpenGL ES的帧率
- 挂起任何分发的队列和不重要的操作队列(你可以继续处理网络请求或其他时间敏感的后台任务)。
applicationDidBecomeActive:
4、转到后台运行
4.1 如图所示:
4.2 当应用程序进入后台时,我们应该做写什么呢?
- 保存用户数据或状态信息,所有没写到磁盘的文件或信息,在进入后台时,最后都写到磁盘去,因为程序可能在后台被杀死,
- 释放尽可能释放的内存
- 图片对象
- 你可以重新加载的 大的视频或数据文件
- 任何没用而且可以轻易创建的对象
5 、返回前台运行
6、程序的终止
7、 The Main Run Loop 主运行循环
- iOS -- 应用程序生命周期(前后台切换,应用的各种状态)
- iOS开发之iOS应用程序生命周期(前后台切换,应用的各种状态)详解
- iOS开发系列--iOS应用程序生命周期(前后台切换,应用的各种状态)详解
- iOS应用程序生命周期(前后台切换,应用的各种状态)详解
- iOS应用程序生命周期(前后台切换,应用的各种状态)详解
- iOS应用程序生命周期(前后台切换,应用的各种状态)详解
- iOS应用程序生命周期(前后台切换,应用的各种状态)详解 .
- iOS应用程序生命周期(前后台切换,应用的各种状态)详解
- iOS应用程序生命周期(前后台切换,应用的各种状态)详解
- iOS应用程序生命周期(前后台切换,应用的各种状态)详解
- iOS应用程序生命周期(前后台切换,应用的各种状态)详解
- iOS应用程序生命周期(前后台切换,应用的各种状态)详解
- iOS应用程序生命周期(前后台切换,应用的各种状态)详解
- iOS应用程序生命周期(前后台切换,应用的各种状态)详解
- iOS应用程序生命周期(前后台切换,应用的各种状态)详解
- iOS应用程序生命周期(前后台切换,应用的各种状态)详解
- iOS应用程序生命周期(前后台切换,应用的各种状态)详解
- iOS应用程序生命周期(前后台切换,应用的各种状态)详解
- IOS-TextField
- Web性能优化的十个技巧
- 调试xcode必备
- NYOJ 18 The Triangle
- iPhone开发之实现UITableView多选删除功能详解
- iOS应用程序生命周期(前后台切换,应用的各种状态)详解
- 原码, 反码, 补码 详解
- uva 12721 Cheap B-Subsequence 背包
- ABAddressBook个人使用总结,联系人中、英文排序及中、英文及号码搜索
- tabbar修改背景点击换图 navbar修改背景
- 自己写的通讯录(按拼音排序、分组)
- 获得通讯录中联系人的所有属性
- THE LINUX/x86 BOOT PROTOCOL
- UITabBarController使用详解