美文网首页
UIApplication

UIApplication

作者: 纳木错_grace | 来源:发表于2016-06-30 22:09 被阅读40次

    简介:

    1,UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序。

    2,每一个应用都有自己的UIApplication对象,而且是单例的,如果用alloc方法新建一个,会报错

    3,获得UIApplication 的方法:[UIApplication sharedApplication]

    4,一个ios程序启动后创建的第一个对象就是UIApplication对象,而且只有一个

    5,利用Application对象,能进行一些应用级别的操作

    1,显示图标上的提醒数字

    UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge categories:nil];

    [[UIApplication sharedApplication] registerUserNotificationSettings:settings];

    UIApplication *app=[UIApplication sharedApplication];

    app.applicationIconBadgeNumber=1;

    2,openUrl方法

    UIApplication *app = [UIApplication sharedApplication];

    打电话:[app openUrl:[NSUrl urlWithString:@“tel://100000”]];

    发短信:[app openUrl:[NSUrl urlWithString:@“sms://111111”]];

    发邮件:[app openUrl:[NSUrl urlWithString:@“mailto://111111@qq.com”]];

    打开网页资源:[app openUrl:[NSUrl urlWithString:@“http://www.baidu.com”]];

    打开地图:

    NSString *addressText = @"beijing";
    
    addressText = [addressText stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
    
    NSString *urlText = [NSString stringWithFormat:@"http://maps.google.com/maps?q=%@", addressText];
    
    NSLog(@"urlText =============== %@", urlText);
    
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlText]];
    

    3,判断程序运行状态

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

    4,显示联网标记

    [UIApplicationsharedApplication].networkActivityIndicatorVisible =YES;
    

    5,阻止屏幕变暗进入休眠状态:(慎用,耗电)

    [UIApplicationsharedApplication].idleTimerDisabled =YES;
    

    一、程序主函数

    int main(int argc, char * argv[]) {
    
    @autoreleasepool {
    
    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    
    }
    
    }
    

    程序启动后,先进入main函数,之后,执行UIApplicationMain这个函数,其中各个参数的意思如下:

    1,argc:系统或者用户传入的参数个数

    2,argue:系统或者用户传入的实际参数

    3,指定应用程序类名:(app的象征),该类必须是UIApplication或其子类,如果是nil,则默认是UIApplication类

    4:指定应用程序的代理类,该类必须遵守UIApplicationDelegate协议

    UIApplicationMain函数会根据第三个参数(类名)创建UIApplication对象,根据第四个参数(代理类名(必须遵守协议))创建一个delegate对象,并将该对象赋值给UIApplication对象中的delegate属性;接着会建立应用程序的Main Runloop(事件循环)【可以理解为里面是一个思循环,这个事件循环是一个队列(先进先出),先添加进去的先处理】,进行事件处理,(首先在程序加载完毕后,调用delegate对象的application:didFinishLaunchingWithOptions:方法),程序正常退出时,UIApplicationMain函数才返回

    二、程序启动的完整过程
    1,main函数

    2,UIApplicationMain:

    *:创建UIApplication对象。

    *:创建UIApplication的delegate对象

    3,delegate对象开始处理(监听)系统事件,(没有storyBoard情况)

    *程序启动完毕的时候,就会调用代理的application:didFinishLaunchingWithOptions:方法,

    *在application:didFinishLaunchingWithOptions:中创建UIWindow

    *创建和设置UIWindow的rootController

    *显示窗口

    3,根据Info.plist获得最主要的storyBoard文件名,加载最主要的storyBoard(有storyBoard)

    *创建UIWindow;

    *创建和设置UIWindow是rootViewController

    *显示窗口

    三、程序启动原理图如下:

    1,application:didFinishedLaunchingWithOptions:程序加载完毕

    2,applicationDidBecomeActive:程序获取焦点

    3,applicationDidEnterBackground:程序进入后台

    在该方法中保存应用程序的数据,以及状态;要设置程序后台继续运行,在这个方法里

    4,applicationWillResignActive:程序失去焦点

    程序将要进入非活动状态执行,在此期间,应用程序不接受消息或事件,例如来电话

    5;applicationWillEnterForeFround:程序从后台回到前台

    在该方法中恢复应用程序的数据,以及状态

    6:applicationDidReceiveMemoryWaring:内存警告,可能要终止程序

    一般在该方法内释放掉不需要的内存

    7:applicationWillTerminate:程序即将退出

    相关文章

      网友评论

          本文标题:UIApplication

          本文链接:https://www.haomeiwen.com/subject/txjfjttx.html