iOS 程序启动时总会调用application:didFinishLaunchingWithOptions:,其中第二个参数launchOptions为NSDictionary类型的对象,里面存储有此程序启动的原因。

launchOptions中的可能键值见UIApplication Class Reference的Launch Options Keys节 。

  • 若用户直接启动,lauchOptions内无数据;
  • 若由其他应用程序通过openURL:启动,则UIApplicationLaunchOptionsURLKey对应的对象为启动URL(NSURL),UIApplicationLaunchOptionsSourceApplicationKey对应启动的源应用程序的bundle ID (NSString);
  • 若由本地通知启动,则UIApplicationLaunchOptionsLocalNotificationKey对应的是为启动应用程序的的本地通知对象(UILocalNotification);
  • 若由远程通知启动,则UIApplicationLaunchOptionsRemoteNotificationKey对应的是启动应用程序的的远程通知信息userInfo(NSDictionary);
  • 其他key还有UIApplicationLaunchOptionsAnnotationKey,UIApplicationLaunchOptionsLocationKey,
    UIApplicationLaunchOptionsNewsstandDownloadsKey。
如果要在启动时,做出一些区分,那就需要在下面的代码做处理。
比如:您的应用可以被某个其它应用调起(作为该应用的子应用),要实现单点登录,那就需要在启动代码的地方做出合理的验证,并跳过登录。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSURL *url = [options objectForKey:UIApplicationLaunchOptionsURLKey];
if(url)
{
}
NSString *bundleId = [options objectForKey:UIApplicationLaunchOptionsSourceApplicationKey];
if(bundleId)
{
}
UILocalNotification * localNotify = [options objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
if(localNotify)
{
}
NSDictionary * userInfo = [options objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if(userInfo)
{
} }
-  (void)applicationWillResignActive:(UIApplication *)application
{
NSLog(@"应用程序将要进入非活动状态,即将进入后台");
}
在应用程序将要由活动状态切换到非活动状态时候,要执行的委托调用,如 按下 home 按钮,返回主屏幕,或全屏之间切换应用程序等。                                        
说明:当应用程序将要进入非活动状态时执行,在此期间,应用程序不接收消息或事件,比如来电话了。 3、- (void)applicationDidEnterBackground:(UIApplication *)application
{
      NSLog(@"如果应用程序支持后台运行,则应用程序已经进入后台运行"); 
} 说明:当程序被推送到后台的时候调用。所以要设置后台继续运行,则在这个函数里面设置即可 4、-  (void)applicationWillEnterForeground:(UIApplication *)application
{
      NSLog(@"应用程序将要进入活动状态,即将进入前台运行");
}
说明:当程序从后台将要重新回到前台时候调用,这个刚好跟上面的那个方法相反。 5、- (void)applicationDidBecomeActive:(UIApplication *)application
{
     NSLog(@"应用程序已进入前台,处于活动状态");
}
说明:当应用程序进入活动状态时执行,这个刚好跟上面那个方法相反 。 6、-  (void)applicationWillTerminate:(UIApplication *)application
{
     NSLog(@"应用程序将要退出,通常用于保存数据和一些退出前的清理工作"); 
}
说明:当程序将要退出是被调用,通常是用来保存数据和一些退出前的清理工作。这个需要要设置UIApplicationExitsOnSuspend的键值。 7、-  (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
    NSLog(@"系统内存不足,需要进行清理工作");
}
说明:iPhone设备只有有限的内存,如果为应用程序分配了太多内存操作系统会终止应用程序的运行,在终止前会执行这个方法,通常可以在这里进行内存清理工作防止程序被终止。 8、-(void)applicationSignificantTimeChange:(UIApplication *)application
{
    NSLog(@"当系统时间发生改变时执行");
}
说明:当系统时间发生改变时执行 9、-  (void)application:(UIApplication)application  willChangeStatusBarFrame:(CGRect)newStatusBarFrame
{
   NSLog(@"StatusBar框将要变化");
}
说明:当StatusBar框将要变化时执行 10、-  (void)application:(UIApplication*)application willChangeStatusBarOrientation:
(UIInterfaceOrientation)newStatusBarOrientation duration:(NSTimeInterval)duration
{
}
说明:当StatusBar框方向将要变化时执行 11、- (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url
{
}
说明:当通过url执行 12、-  (void)application:(UIApplication*)application  didChangeStatusBarOrientation:(UIInterfaceOrientation)oldStatusBarOrientation
{
}
说明:当StatusBar框方向变化完成后执行 13、-  (void)application:(UIApplication*)application didChangeSetStatusBarFrame:(CGRect)oldStatusBarFrame
{
}
说明:当StatusBar框变化完成后执行 另外还有一些协议方法需要知道:
Handling Remote Notifications  (处理远程消息)
-(void) application:(UIApplication *) applicationdidReceiveRemoteNotification:(NSDictonary *) userinfo
说明:当一个运行着的应用程序收到一个远程的通知 发送到委托去...
-(void) application:(UIApplication *) applicationdidRegisterForRemoteNotificationsWithDeviceToken:(NSData *) deviceToken
说明:当一个应用程序成功的注册一个推送服务(APS) 发送到委托去...
-(void) application:(UIApplication *) applicationdidFailToRegisterForRemoteNotificationsWithError:(NSError *) error
说明:当 APS无法成功的完成向 程序进程推送时 发送到委托去...

Handling Local Notification (处理本地消息)

-(void) application:(UIApplication *) applicationdidReceiveLocalNotification:(UILocalNotification *)notification
说明:当一个运行着的应用程序收到一个本地的通知 发送到委托去...

Responding to Content Protections Changes(响应受保护内容的改变)

-applicationProtectedDataWillBecomeUnavailable:
说明:通知委托,受保护的文件当前变为不可用的
-applicationProtectedDataWillBecomeAvailable:
说明:通知委托  受保护的文件当前变为可用
部份资料来源于:http://www.cnblogs.com/worldtraveler/p/4759602.html

最新文章

  1. JSON.stringify////////////////////////////////zzzzzzzzzzzzzz
  2. SQL Server存储(7/8) :理解BCM页
  3. Web压力测试 ApacheBench(ab)
  4. c#生成随机数示例分享
  5. XE7 - 升级及初步使用
  6. 【转】EditText获取焦点不自动弹出键盘设置--失去焦点的方法,不错
  7. bcov进行覆盖率统计
  8. K - Candies(最短路+差分约束)
  9. EF Code First列名 'Discriminator' 无效的问题
  10. Python 浅拷贝copy()与深拷贝copy.deepcopy()
  11. Oracle11g 体系结构
  12. 补充:CSS选择器样式的规范!
  13. 35 【kubernetes】configMap
  14. AngularJS输出helloworld
  15. python3 自学第一天,python 介绍
  16. iOS 打包方式
  17. 第五章 Web应用程序状态管理
  18. Want to write a book? Use word count to stay on track
  19. flask中路由的本质源码分析
  20. Git 单机版

热门文章

  1. public staic void main 总结
  2. 如何使用Visual Studio 2013 创建Azure云应用
  3. android智能家居在线语音控制
  4. 利用ACE 自己实现的线程池
  5. 使用CSS3(一)
  6. 【面试虐菜】—— Oracle中CHAR、VARCHAR的区别
  7. 在DDMS中访问data目录
  8. IOS程序内发短信 MFMessageComposeViewController
  9. linux 查看并终止进程
  10. TIMESTAMP 与 explicit_defaults_for_timestamp