UIApplication对象的生命周期事件及常用方法

每个iOS应用中都有且仅有一个UIApplication对象,该对象有程序自行创建,手动创建将会报错!例如UIApplication *app =[[UIApplication alloc] init];会报如下错误:Terminating app due to uncaught exception'NSInternalInconsistencyException', reason: 'There can only be oneUIApplication instance.'


UIApplication对象的生命周期函数如下示:

- (BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // Override point for customization afterapplication launch.

    NSLog(@"应用程序启动完成:%s", __func__);  

    return YES;

}


- (void)applicationWillResignActive:(UIApplication *)application {

    NSLog(@"失去焦点:%s", __func__);

}

 

- (void)applicationDidEnterBackground:(UIApplication *)application {

    NSLog(@"完全进行入到后台:%s", __func__);

}

 

- (void)applicationWillEnterForeground:(UIApplication *)application{

    NSLog(@"将进入到前台:%s", __func__);

}

 

- (void)applicationDidBecomeActive:(UIApplication *)application {

    NSLog(@"获取焦点:%s", __func__);

   

}

 

- (void)applicationWillTerminate:(UIApplication *)application {

    NSLog(@"程序将中断%s", __func__);

}

 

-(void)applicationDidReceiveMemoryWarning:(UIApplication*)application{

    NSLog(@"程序接收到内存警告%s", __func__);

    //接收到内存警告,释放一些不必要的资源

}


- (BOOL)application:(UIApplication *)application openURL:(NSURL*)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

{

    return YES;

}

在UIApplication的生命周期状态发生改变的时候会发送不同的消息到它的Delegate对象中,下面将对不同的情况描述UIApplication状态转换时Delegate收到消息的顺序。调用到的消息函数由上面标定的序号代替。

程序首次启动(通过SpringBoard)显示:1-- >5

(若程序通过URL启动:1-- > 8-->5)

点击home键:2-- >3

运行过程中按锁屏键,消息顺序与按Home键相同,区别在于此时会关闭所有网络连接(iOS5.0+)

 

点击图标返回:4 -- >5

模拟内存警告:7

模拟方法:选中模拟器,或者在选中Xcode时选取菜单, Xcode-- > OpenDeveloper Tool -->Simulator

切换到Simulator中,有Hardware菜单,里面有Simulate Memory Warning 菜单项用于模拟内存警告


或者直接在模拟器中使用快捷键:shift + command + M

总体过程如下示:


在IOS4.0以后由于支持多任务,程序可以run in background,而且默认该选项是开启的。若程序在Background状态并且有后台任务执行时被中止则会触发applicationWillTerminate:消息,若程序在Suspend状态被中止时不会触发该消息。

运行过程中被短信/电话等中断,则发送消息 2

若用户选择短信/电话,则发送消息 3,后续流程与按Home键相同。

若用户忽略短信/电话,则发送消息 5,回到Foreground运行状态。

运行过程中双击Home键显示任务切换器,会发送消息2

若选择其他程序或者单击Home键返回到SpringBoard,则发送消息 3,后续流程与按Home键相同。

若再次双击Home键返回APP,则发送消息 5,回到Foreground运行状态。

通过SpringBoard或者任务切换器再次启动时,消息顺序为4-- >5 。

通过URL再次启动时,消息顺序4-- >8-->5.

当程序在Suspend状态时,若内存紧张,系统也会将程序立即终止以回收内存,此时也不会有任何消息发送。

同时UIApplication对象还可以用来设置全局性的状态或执行一些操作。

1.设置网络请求状态/取消网络请求状态:application.networkActivityIndicatorVisible = YES/NO

2.设置应用图标数字:application.applicationIconBadgeNumber= 7

3.设置状态栏样式:通过 –(UIStatusBarStyle)preferredStatusBarStyle方法或者application.StatusBarStyle属性。

4.openURL方法:

UIApplication  *app = [UIApplication  sharedApplication];

NSString*urlString = @“tel://10086”; //打电话

                 = @“sms://10086”;     //发短信

                 = @ “mailto://[email protected]”    //发邮件

                 = @”http://ios.edu.com   “    //打开网页

[app  openURL:[NSURL  URLWithStirng: urlString] ];

hope it's help。

你可能感兴趣的:(UIApplication对象的生命周期事件及常用方法)