概述
首先应该明确的是iOS程序的几种运行状态:
Not running 未运行 程序没启动
Inactive 未激活 程序在前台运行,不过没有接收到事件。在没有事件处理情况下程序通常停留在这个状态
Active 激活 程序在前台运行而且接收到了事件。这也是前台的一个正常的模式
Backgroud 后台 程序在后台而且能执行代码,大多数程序进入这个状态后会在在这个状态上停留一会。时间到之后会进入挂起状态(Suspended)。有的程序经过特殊的请求后可以长期处于Backgroud状态
Suspended 挂起 程序在后台不能执行代码。系统会自动把程序变成这个状态而且不会发出通知。当挂起时,程序还是停留在内存中的,当系统内存低时,系统就把挂起的程序清除掉,为前台程序提供更多的内存。
激活自然不用说,未激活是个什么东西?举例来说,按下home键,锁屏,拉下状态栏,进入控制中心等等都会进入未激活状态.这涉及到响应中断的问题,这里不做过多阐述
程序之间状态的切换如下图:
同时,对于不同的状态改变,iOS系统提供了相关的回调函数:
- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
- (void)applicationWillResignActive:(UIApplication *)application
- (void)applicationDidBecomeActive:(UIApplication *)application
- (void)applicationDidEnterBackground:(UIApplication *)application
- (void)applicationWillEnterForeground:(UIApplication *)application
- (void)applicationWillTerminate:(UIApplication *)application
- (void)applicationDidFinishLaunching:(UIApplication*)application
对于面试中问到的关于声明周期的问题,能够将上述内容表达清楚便可以了.
涉及到包括应用程序启动/关闭流程,main函数的作用,程序中断和后台运行的问题可参照下列文章:
官方文档:https://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html#//apple_ref/doc/uid/TP40007072-CH4-SW20
相关博文:http://blog.csdn.net/totogo2010/article/details/8048652
最后
以上就是舒服小懒猪为你收集整理的iOS应用程序生命周期问题的全部内容,希望文章能够帮你解决iOS应用程序生命周期问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复