转载注明出处!!
与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的启动过程
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
注意在应用进入后台是保存程序的数据和状态
在应用进入前台时恢复应用的数据和状态。
学如逆水行舟!!!