ios中UIApplication的作用及ios程序的启动过程

时间:2020-12-03 19:45:44

转载注明出处!!

与Android中的Application类似,ios中的UIApplication就代表这一个应用程序。在ios中,每一个应用都有自己唯一的UIApplication

可以通过 sharedApplication来获取App中额UIApplication对象,从share可以得知,UIApplication是一个单例对象。

UIAppliation的作用:

    能够进行一些应用级别的操作。

例如:

(1)类似QQ或微博中应用程序图标右上角的红色提醒数字:

通过属性:applicationIconBadgeNumber来进行设置。

(2)类似微博中下拉刷新时状态栏的联网显示器

通过属性:netWorkActivityIndicatorVisible = YES来设置

(3)管理状态栏的样式

有两种方式 在ios7之,由UIApplication管理,在ios7之后,改由UIViewController管理,ios7以后通过配置info.plist中属性可以让UIApplication接管

修改样式:preferredStatusBarStyle。修改可见性preferredStatusBarHidden来决定是否显示

如果状态栏样式统一,那么用UIApplication,如果每个界面都不一样可以用UIVIewController

 (4)openURL方法:

可以用来打电话,发短信,打开网页,打开其他的应用程序,该方法接受的参数 NSURL:统一资源定位符,格式为 “协议名称://地址/资源路径”,类似android中

的contentProvider,比如 [openURL [NSURL URLWithString:@"tel://10086"]]等等

注意上面的操作都是应用级别的


UIApplication和其delegate

该delegate的作用是:在App应用受到来自系统其他事件的干扰是的回调,比如在玩游戏时来电,这是游戏App被电话干扰,这时候就要通知游戏App,来电话了

优先级很高,那么游戏App就得有反应(就是回调它自己对应的方法)

delegate可以处理的事件有:

 (1)应用程序的生命周期

 (2)系统事件

 (3)内存警告等等

那么看一下ios的启动过程

ios中UIApplication的作用及ios程序的启动过程

在ios程序一启动,就会执行

int UIApplicationMain(int argc,char *argv[],NSString*principalClassName,NSString *delegateClassName);

前连个参数和c的main函数一个意思,分别为参数的个数和内容,principalClassName 指定App应用程序类名(为nil时默认就是UIApplication了),

可以是UIApplication或者其子类,delegateClassName为其代理,当执行完该函数,就完成了UIApplication的穿件和代理的设置,并开启了事件循环

监听用户的操作,当系统杀掉App或者用户关闭App等,该事件循环结束,应用退出。

UIApplicationDelegate在期间会监听如上的一些方法

application:didFinishLaunchingwithOptions:在应用加载完毕后调用  -->onCreate

...didBecomeActive:在程序获取焦点是调用-->onResume

...DidEnterBacgound:在程序进入后台调用-->onStop

...DidWillResignActive:在应用失去焦点时调用-->onPause

...DidReceiveMemoryWarning:在应用内存不足时调用,这是就该释放内存了。

...WillTerminate:在应用将要销毁时调用-->onDestroy

注意在应用进入后台是保存程序的数据和状态

在应用进入前台时恢复应用的数据和状态。

学如逆水行舟!!!