AppDelegate.m中的常用的方法介绍,以及ios程序的状态
2014-05-23 18:43
771 查看
在AppDelegate.m中一般会用到以下方法:
1、application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
注解:在应用程序启动后,委托首先调用该方法。可以在该方法里做一些对象的初始化。我的理解是:应用程序启动后,代理首先调用该方法进行一些列初始化。可想而知在这个方法里我们可以做很多事,比如:推送的注册等等。
2、[b]applicationWillResignActive:(UIApplication
*)application[/b]
注解:在应用程序将要由活动状态切换到非活动状态时候,委托会调用该方法。如
按下 home 按钮,返回主屏幕,或全屏之间切换应用程序等。一般来说该方法里面我们不会过多的做逻辑处理。该方法了解就OK,不用太重视。(特殊需求例外)
3、[b]applicationDidEnterBackground:(UIApplication
*)application[/b]
[b]注解:在应用程序已进入后台程序时,委托调用该方法。与上面第2个方法一样,不需过多的添加逻辑处理。(特殊需求例外)
[/b]
4、[b]applicationWillEnterForeground:(UIApplication
*)application[/b]
注解:在应用程序将要进入前台时(被激活),委托调用该方法,刚好与 applicationWillResignActive
方法相对应。我的理解是:应用在后台挂起的状态转变成激活状态的时候,会调用到该方法。
5、applicationDidBecomeActive:(UIApplication
*)application
注解:在应用程序已被激活后,委托调用该方法,刚好与 applicationDidEnterBackground 方法相对应。这里就可以做一些逻辑处理了,但我们一般都没咋弄到该方法。
6、applicationWillTerminate:(UIApplication
*)application
注解:在应用程序要完全退出的时候,委托调用该方法。(一般我们也没咋用)
上面是AppDelegate.m中一般会出现的方法,在我们实际中我还会用到一些方法,下面的方法是我在AppDelegate.m实际中用到的,如果你们还知道实际中AppDelegate.m我们还会用到的方法反馈一下我来补全。大家共同学习下:
-
(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
注解:通过远程通信来将应用状态为正在前台或者后台启动运行,委托调用该方法。比如在做推送的时候,在点击推送的消息将应用程序正在前台或者后台激活时候代理就会掉用到该方法。例如:
如有不对之处,敬请留言
1、application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
注解:在应用程序启动后,委托首先调用该方法。可以在该方法里做一些对象的初始化。我的理解是:应用程序启动后,代理首先调用该方法进行一些列初始化。可想而知在这个方法里我们可以做很多事,比如:推送的注册等等。
2、[b]applicationWillResignActive:(UIApplication
*)application[/b]
注解:在应用程序将要由活动状态切换到非活动状态时候,委托会调用该方法。如
按下 home 按钮,返回主屏幕,或全屏之间切换应用程序等。一般来说该方法里面我们不会过多的做逻辑处理。该方法了解就OK,不用太重视。(特殊需求例外)
3、[b]applicationDidEnterBackground:(UIApplication
*)application[/b]
[b]注解:在应用程序已进入后台程序时,委托调用该方法。与上面第2个方法一样,不需过多的添加逻辑处理。(特殊需求例外)
[/b]
4、[b]applicationWillEnterForeground:(UIApplication
*)application[/b]
注解:在应用程序将要进入前台时(被激活),委托调用该方法,刚好与 applicationWillResignActive
方法相对应。我的理解是:应用在后台挂起的状态转变成激活状态的时候,会调用到该方法。
5、applicationDidBecomeActive:(UIApplication
*)application
注解:在应用程序已被激活后,委托调用该方法,刚好与 applicationDidEnterBackground 方法相对应。这里就可以做一些逻辑处理了,但我们一般都没咋弄到该方法。
6、applicationWillTerminate:(UIApplication
*)application
注解:在应用程序要完全退出的时候,委托调用该方法。(一般我们也没咋用)
上面是AppDelegate.m中一般会出现的方法,在我们实际中我还会用到一些方法,下面的方法是我在AppDelegate.m实际中用到的,如果你们还知道实际中AppDelegate.m我们还会用到的方法反馈一下我来补全。大家共同学习下:
-
(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
注解:通过远程通信来将应用状态为正在前台或者后台启动运行,委托调用该方法。比如在做推送的时候,在点击推送的消息将应用程序正在前台或者后台激活时候代理就会掉用到该方法。例如:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { if (userInfo != NULL) { int badge = [UIApplication sharedApplication].applicationIconBadgeNumber; if (badge > 0) { //如果应用程序消息通知标记数(即小红圈中的数字)大于0,清除标记。 badge--; //清除标记。清除小红圈中数字,小红圈中数字为0,小红圈才会消除。 [UIApplication sharedApplication].applicationIconBadgeNumber = badge; } //跳转到指定url页面 NSString *url = [[userInfo objectForKey:@"data"] objectForKey:@"url"]; if (url != NULL) { if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { self.myWebViewController = [[MyWebViewController alloc] initWithNibName:@"MyWebViewController" bundle:nil]; }else{ self.myWebViewController = [[MyWebViewController alloc] initWithNibName:@"MyWebViewController_ipad" bundle:nil]; } self.myWebViewController.urlString = url; [self.window setRootViewController:self.myWebViewController]; } NSString *id =[[userInfo objectForKey:@"data"] objectForKey:@"id"]; NSString *urlStr = [[NSString alloc] initWithFormat:@"http://www.yiweihui.com/mobile/api.php?action=update_is_show&id=%@",id]; NSURL *requestUrl = [NSURL URLWithString:urlStr]; __weak ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:requestUrl]; [request setCompletionBlock:^{ NSString *responseStr = [request responseString]; NSLog(@"推送后反馈的信息:%@",responseStr); }]; [request setFailedBlock:^{ NSError *error = [request error]; NSLog(@"error is :%@",error); }]; [request startAsynchronous]; } }
如果是使用 iOS 7 的 Remote Notification 特性那么就要用到下面的方法:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler;
</pre><pre name="code" class="objc" style="text-align: left;background-color: rgb(255, 255, 255); ">如果应用程序处在未启动的情况下,由推送启动应用程序,代理就会调用application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法。
iOS应用程序状态机一共有五种状态:
1. Not running:应用还没有启动,或者应用正在运行但是途中被系统停止。
2.Inactive:当前应用正在前台运行,但是并不接收事件(当前或许正在执行其它代码)。一般每当应用要从一个状态切换到另一个不同的状态时,中途过渡会短暂停留在此状态。唯一在此状态停留时间比较长的情况是:当用户锁屏时,或者系统提示用户去响应某些(诸如电话来电、有未读短信等)事件的时候。
3. Active:当前应用正在前台运行,并且接收事件。这是应用正在前台运行时所处的正常状态。
4. Background:应用处在后台,并且还在执行代码。大多数将要进入Suspended状态的应用,会先短暂进入此状态。然而,对于请求需要额外的执行时间的应用,会在此状态保持更长一段时间。另外,如果一个应用要求启动时直接进入后台运行,这样的应用会直接从Not running状态进入Background状态,中途不会经过Inactive状态。比如没有界面的应用。注此处并不特指没有界面的应用,其实也可以是有界面的应用,只是如果要直接进入background状态的话,该应用界面不会被显示。
5. Suspended:应用处在后台,并且已停止执行代码。系统自动的将应用移入此状态,且在此举之前不会对应用做任何通知。当处在此状态时,应用依然驻留内存但不执行任何程序代码。当系统发生低内存告警时,系统将会将处于Suspended状态的应用清除出内存以为正在前台运行的应用提供足够的内存。
之间的状态相互转化的图如下:
如有不对之处,敬请留言
相关文章推荐
- iOS程序的五种状态,AppDelegate中的回调方法和通知
- Info.plist和pch文件的作用,UIApplication,iOS程序的启动过程,AppDelegate 方法解释,UIWindow,生命周期方法
- IOS AppDelegate常用方法
- iOS appdelegate几个方法介绍
- Info.plist和pch文件的作用,UIApplication,iOS程序的启动过程,AppDelegate 方法解释,UIWindow,生命周期方法
- [ios]IOS的AppDelegate方法中的事件触发调用 以及 关闭 ios应用程序
- Info.plist和pch文件的作用,UIApplication,iOS程序的启动过程,AppDelegate 方法解释,UIWindow,生命周期方法
- ios-AppDelegate常用的方法
- iOS-AppDelegate中回调方法简单介绍
- Info.plist和pch文件的作用,UIApplication,iOS程序的启动过程,AppDelegate 方法解释,UIWindow,生命周期方法
- Info.plist和pch文件的作用,UIApplication,iOS程序的启动过程,AppDelegate 方法解释,UIWindow,生命周期方法
- IOS开发入门----UIApplication和AppDelegate以及IOS程序启动的过程(2017/8/8)
- 深入学习Hibernate4_05hibernate中对象的四种状态(临时状态,持久化状态,游离状态,删除状态),以及常用方法的介绍
- iOS开发-隐藏系统状态栏 让app启动时图片全屏 进入程序后显示状态栏方法。
- Info.plist和pch文件的作用,UIApplication,iOS程序的启动过程,AppDelegate 方法解释,UIWindow,生命周期方法
- Cocos2d-iPhone V3 (1) 基本程序框架以及常用动作介绍
- 获取程序Appdelegate中无需释放的特定控制器,非新建-------IOS
- iOS Appdelegate代理方法说明和触发条件
- iOS开发-APP在waiting for review状态时如何重新上传程序
- ios app程序状态