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

AppDelegate 方法详解的更多相关文章

  1. session的使用方法详解

    session的使用方法详解 Session是什么呢?简单来说就是服务器给客户端的一个编号.当一台WWW服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站.当每个用户首次与这台WWW服务器 ...

  2. Kooboo CMS - Html.FrontHtml[Helper.cs] 各个方法详解

    下面罗列了方法详解,每一个方法一篇文章. Kooboo CMS - @Html.FrontHtml().HtmlTitle() 详解 Kooboo CMS - Html.FrontHtml.Posit ...

  3. HTTP请求方法详解

    HTTP请求方法详解 请求方法:指定了客户端想对指定的资源/服务器作何种操作 下面我们介绍HTTP/1.1中可用的请求方法: [GET:获取资源]     GET方法用来请求已被URI识别的资源.指定 ...

  4. ecshop后台增加|添加商店设置选项和使用方法详解

    有时候我们想在Ecshop后台做个设置.radio.checkbox 等等来控制页面的显示,看看Ecshop的设计,用到了shop_config这个商店设置功能 Ecshop后台增加|添加商店设置选项 ...

  5. (转)Spring JdbcTemplate 方法详解

    Spring JdbcTemplate方法详解 文章来源:http://blog.csdn.net/dyllove98/article/details/7772463 JdbcTemplate主要提供 ...

  6. C++调用JAVA方法详解

    C++调用JAVA方法详解          博客分类: 本文主要参考http://tech.ccidnet.com/art/1081/20050413/237901_1.html 上的文章. C++ ...

  7. windows.open()、close()方法详解

    windows.open()方法详解:         window.open(URL,name,features,replace)用于载入指定的URL到新的或已存在的窗口中,并返回代表新窗口的Win ...

  8. CURL使用方法详解

    php采集神器CURL使用方法详解 作者:佚名  更新时间:2016-10-21   对于做过数据采集的人来说,cURL一定不会陌生.虽然在PHP中有file_get_contents函数可以获取远程 ...

  9. JAVA 注解的几大作用及使用方法详解

    JAVA 注解的几大作用及使用方法详解 (2013-01-22 15:13:04) 转载▼ 标签: java 注解 杂谈 分类: Java java 注解,从名字上看是注释,解释.但功能却不仅仅是注释 ...

随机推荐

  1. asp.net的运行内幕

    每当浏览器向IIS发送一个页面请求的时候,相应的网页就会被编译成DLL文件,然后由JIT来运行这个DLL文件,最后将运行结果发送给客户端.一旦网页发送了变化,下次再请求页面的话,网页又会被重新被编译成 ...

  2. 【HTML】Beginner2:page title

    1 page title </head>    contains information about the page </title> the title of the do ...

  3. SSE求解向量大小

    float f=; __asm { mov esi, this ; vector u movups xmm0, [esi] ; first vector in xmm0 mulps xmm0, xmm ...

  4. 在今天,我们为什么还要做一个CMS

    我们今天看到,在这个移动大潮席卷来的这几年,互联网以惊人的速度改变着这个世界.包括我们这个在中国互联网史上有重大影响力的“站长”,也几乎全军覆没.当然随着站长们兴起的开源CMS,到今天也都穷途末路了. ...

  5. Spark0.8.0的安装配置

    1.profile export SCALA_HOME=/home/hadoop/scala-2.9.3SPARK_080=/home/hadoop/spark-0.8.0export SPARK_H ...

  6. UltraISO PE(软碟通) v9.6.2.3059 注册码

    注册码: 王涛7C81-1689-4046-626F

  7. HW5.3

    import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...

  8. NDK编译路径问题

    有点偷懒,在一个使用了jni工程里面稍微修改一下,编译另外一个jni工程. 代码写完后,Android.mk等文件也写好,但是ndk-build的时候提示Android NDK:Your APP_BU ...

  9. jbpm4.4 demo3

    package cn.itcast.c_processinstance; import java.util.List; import org.jbpm.api.Configuration; impor ...

  10. 成品入库过账bapi

    入库过账 FUNCTION ZPP_BAPI_PRODUCT_STOCK_IN. *"---------------------------------------------------- ...