博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS之UIApplecation和appdelegate的使用
阅读量:4289 次
发布时间:2019-05-27

本文共 5505 字,大约阅读时间需要 18 分钟。

– (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions NS_AVAILABLE_IOS(3_0);

当应用程序启动时(不包括已在后台的情况下转到前台),调用此回调。launchOptions是启动参数,假如用户通过点击push通知启动的应用,这个参数里会存储一些push通知的信息。

– (void)applicationDidBecomeActive:(UIApplication *)application;//----程序变得活跃

1.当应用程序全新启动,

2.在后台转到前台,完全激活时,都会调用这个方法。如果应用程序是以前运行在后台,这时可以选择刷新用户界面。

– (void)applicationWillResignActive:(UIApplication *)application;//-----程序将要变得活跃

当应用从活动状态主动到非活动状态的应用程序时会调用这个方法。这可导致产生某些类型的临时中断(如传入电话呼叫或SMS消息)。或者当用户退出应用程 序,它开始过渡到的背景状态。使用此方法可以暂停正在进行的任务,禁用定时器,降低OpenGL ES的帧速率。游戏应该使用这种方法来暂停游戏。
调用时机可能有以下几种:锁屏,按HOME键,下接状态栏,双击HOME键弹出低栏,等情况

– (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation NS_AVAILABLE_IOS(4_2);//-----回调第三方应用或者第三方APP传过来的url

// no equiv. notification. return NO if the application can’t open for some reason
当用户通过其它应用启动本应用时,会回调这个方法,url参数是其它应用调用openURL:方法时传过来的。

– (void)applicationDidReceiveMemoryWarning:(UIApplication *)application;

当应用可用内存不足时,会调用此方法,在这个方法中,应该尽量去清理可能释放的内存。如果实在不行,可能会被强行退出应用。

 – (void)applicationWillTerminate:(UIApplication *)application;//------程序退出

当应用退出,并且进程即将结束时会调到这个方法,一般很少主动调到,更多是内存不足时是被迫调到的,我们应该在这个方法里做一些数据存储操作。

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken NS_AVAILABLE_IOS(3_0);

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error NS_AVAILABLE_IOS(3_0);
当客户端注册远程通知时,会回调上面两个方法。
如果成功,则回调第一个,客户端把deviceToken取出来发给服务端,push消息的时候要用。
如果失败了,则回调第二个,可以从error参数中看一下失败原因。
注:注册远程通知使用如下方法:

UIRemoteNotificationType t=UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound;[[UIApplication sharedApplication] registerForRemoteNotificationTypes:t];
 

 – (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo NS_AVAILABLE_IOS(3_0);

当应用在前台运行中,收到远程通知时,会回调这个方法。
当应用在后台状态时,点击push消息启动应用,也会回调这个方法。

 – (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification NS_AVAILABLE_IOS(4_0);
当应用收到本地通知时会调这个方法,同上面一个方法类似。
如果在前台运行状态直接调用,如果在后台状态,点击通知启动时,也会回调这个方法

– (void)applicationDidEnterBackground:(UIApplication *)application NS_AVAILABLE_IOS(4_0);//-------程序进入后台

当用户从台前状态转入后台时,调用此方法。使用此方法来释放资源共享,保存用户数据,无效计时器,并储存足够的应用程序状态信息的情况下被终止后,将应用 程序恢复到目前的状态。如果您的应用程序支持后台运行,这种方法被调用,否则调用applicationWillTerminate:用户退出。

 – (void)applicationWillEnterForeground:(UIApplication *)application NS_AVAILABLE_IOS(4_0);//----程序将要进入后

当应用在后台状态,将要进行动前台运行状态时,会调用此方法。
如果应用不在后台状态,而是直接启动,则不会回调此方法。

总结:

1.程序第一次启动:didfinishlaunch,程序变得活跃

2.单击home键进入后台:即将变得活跃,程序进入后台;再点击APP:即将进入后台,程序变得活跃;

3.双击home键:即将变得活跃;再点击home键或者APP页面程序变得活跃;

4.从APP跳转到第三方的APP或者网页即将变得活跃,进入后台;再点击左上角的返回自己的app:即将进入后台,程序变得活跃;如果调到了APP之外的网页再点击home,再回到网页,网页左上角的返回APP就不见了,可以双击home键,返回APP;

======================================

正在运行的程序,点击退出按钮后,之前内存中的静态数据还在内存中,

手机长时间锁屏后,再打开,会到登录界面,这时程序重启了,数据都从内存中销毁;

//监听程序的运行状态

//- (void)statistic{

//    /**

//     *  @brief App启动

//     *

//     */

//    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(gameLaunch)

//                                                 name:UIApplicationDidFinishLaunchingNotification object:nil];

//    

//    /**

//     *  @brief App进入前台

//     *

//     */

//    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(gameBecomeActive)

//                                                 name:UIApplicationDidBecomeActiveNotification object:nil];

//    

//    /**

//     *  @brief App挂起

//     *

//     */

//    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(gameResignActive)

//                                                 name:UIApplicationWillResignActiveNotification object:nil];

//    

//}

//=====================

    //获取当前的程序状态

//    UIApplicationStateActive(前台)

//    UIApplicationStateInactive(收到通知)

//    UIApplicationStateBackground(后台)

    

//        UIApplicationState state = [UIApplication sharedApplication].applicationState;

=============

1.设置icon上的数字图标

    //设置主界面icon上的数字图标,在2.0中引进, 缺省为0

    [UIApplicationsharedApplication].applicationIconBadgeNumber = 4;

2.设置摇动手势的时候,是否支持redo,undo操作

   //摇动手势,是否支持redo undo操作。

   //3.0以后引进,缺省YES
    [UIApplicationsharedApplication].applicationSupportsShakeToEdit =YES;

3.判断程序运行状态

    //判断程序运行状态,在2.0以后引入

   
   if([UIApplicationsharedApplication].applicationState ==UIApplicationStateInactive){
        NSLog(@"程序在运行状态");
    }

4.阻止屏幕变暗进入休眠状态

   //阻止屏幕变暗,慎重使用,缺省为no 2.0

    [UIApplicationsharedApplication].idleTimerDisabled =YES;

慎重使用本功能,因为非常耗电。

5.显示联网状态

    //显示联网标记 2.0

    [UIApplicationsharedApplication].networkActivityIndicatorVisible =YES;

6.在map上显示一个地址

   NSString* addressText  Infinite Loop";

   // URL encode the spaces
    addressText =  [addressTextstringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
   NSString* urlText = [NSStringstringWithFormat:@"@", addressText];
   
    [[UIApplicationsharedApplication]openURL:[NSURLURLWithString:urlText]];

7.发送电子邮件

   NSString *recipients  from California!";

   NSString *body  is raining in sunny California!";
   
    NSString *email = [NSStringstringWithFormat:@"@", recipients, body];
    email = [emailstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
   
    [[UIApplicationsharedApplication]openURL:[NSURLURLWithString:email]];

8.打电话到一个号码

   // Call Google 411

    [[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@"tel://8004664411"]];

9.发送短信 

    // Text to Google SMS
    [[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@"sms://466453"]];

10.打开一个网址

   // Lanuch any iPhone developers fav site

    [[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@""]];

==================获取窗口的根控制器:

[UIApplicationsharedApplication].keyWindow.rootViewController;

转载地址:http://izmgi.baihongyu.com/

你可能感兴趣的文章
Java应用架构的演化之路
查看>>
看透内存中的数组
查看>>
Android工程打包成jar文件,并且将工程中引用的jar一起打入新的jar文件中
查看>>
JS单例模式在工作中的使用
查看>>
Java易混小知识——equals方法和==的区别
查看>>
内置对象(Session、Application、ViewState)
查看>>
为什么Java有GC还需要自己来关闭某些资源?
查看>>
Android 热修复,插件式开发---基本知识
查看>>
JSP九大内置对象、四种作用域、跳转方式
查看>>
JSP 自定义标签
查看>>
JSP JavaBean
查看>>
从两个字符串中找出最大公共子字符串
查看>>
Java代码添加背景音乐
查看>>
Java面试题全集(上)
查看>>
JAVA泛型中的有界类型(extends super)
查看>>
炫酷进度条:Android 仿应用宝下载进度条
查看>>
Java程序内存的简单分析
查看>>
Javascript单例模式概念与实例
查看>>
SQL NULL 函数
查看>>
多例设计模式
查看>>