not running — 没有启动app
inactive — app运行在前台,但是没有处理任何事件
active — app运行在前台,并且在处理事件
background — app运行在后台,还在内存中,并且执行代码
suspend — app还在内存中,但是不运行任何代码,如果内存不足,会自动kill掉
当一个APP启动的时候讲调用
- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{returnYES;
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{//Override point for customization after application launch.returnYES;
}
这两个方法的作用几乎完全一样,只是执行顺序有先后。AppDelegate类默认出现的是application: didFinishLaunchingWithOptions:,一般情况下只需要处理这个方法就可以了。
如何两种方法都存在的话,必须设置返回值都为YES
launchOptions存储的是启动的类型
用户(点击icon)直接启动程序,launchOptions内无数据;
其它程序通过openURL:方式启动,则可以通过键UIApplicationLaunchOptionsURLKey来获取传递过来的url
由本地通知启动,则可以通过键UIApplicationLaunchOptionsLocalNotificationKey来获取本地通知对象(UILocalNotification)
由远程通知启动,则可以通过键UIApplicationLaunchOptionsRemoteNotificationKey来获取远程通知信息(NSDictionary)
启动阶段完成就进入运行阶段程序的状态为active