版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_28142539/article/details/51062241
应用生命周期
作为应用程序的委托对象,Appdelegate类在应用生命周期的不同阶段会回调不同方法。
此类本身没有任何功能代码,它的作用是实现了UIApplcation和iOS操作系统之间的协议。该协议的方法就对应UIApplication在操作系统中的各个状态,如:运行时,进入后台,进入前台,被打断,收到本地或远程通知
介绍一些iOS应用的5种状态
Not Running(非运行状态) 应用没有运行或被系统终止
Inactive(前台非活跃状态) 应用正在进入前台状态,但是还不能接收事件处理
Active(前台活跃状态) 应用进入前台状态,能接收事件处理
Background(后台状态) 应用进入后台,依然能执行低吗。如果有可执行的代码,就会执行代码,如果没有可执行的代码或者可执行的代码将执行完毕,应用会马上进入挂起状态
Suspended(挂起状态) 处于挂起的应用进入一种"冷冻"状态,不能执行代码。如果内存不足,应用会被终止。
AppDelegate对象方法
//应用启动并进行初始化的时候调用该方法并发出通知。这个阶段会初始化根视图控制器
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSLog(@"应用启动并进行初始化");
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.backgroundColor = [UIColor greenColor];
//这个是便捷方法,去使被使用对象的主窗口显示到屏幕的最前端
[self.window makeKeyAndVisible];
// 如果这样写,那么我们需要给self.window一个rootViewController
self.window.rootViewController = [[ViewController alloc]init];
// self.window.rootViewController = [[ARootViewController alloc]init];
// self.window.rootViewController = [[BRootViewController alloc] initWithNibName:@"BRootViewController" bundle:[NSBundle mainBundle]];
return YES;
}
//应用从活跃状态进入到非活跃状态时调用该方法并发出通知。这个阶段可以保存UI状态
- (void)applicationWillResignActive:(UIApplication *)application {
NSLog(@"应用从活跃状态进入到非活跃状态");
}
//应用进入后台时调用该方法并发出通知。这个阶段可以保存用户数据,释放一些资源。
- (void)applicationDidEnterBackground:(UIApplication *)application {
NSLog(@"应用进入后台");
}
//应用进入前台,但是还没有处于活跃状态时调用该方法并发出通知。这个阶段可以恢复用户数据
- (void)applicationWillEnterForeground:(UIApplication *)application {
NSLog(@"应用将要进入前台");
}
//应用进入前台并处于活跃动态时调用该方法并发出通知。着个阶段可以保存UI状态
- (void)applicationDidBecomeActive:(UIApplication *)application {
NSLog(@"应用已经进入活动状态");
}
//应用被终止时调用该方法并发出通知,但内存清除时除外。这个阶段释放一些资源,也可以保存用户数据
- (void)applicationWillTerminate:(UIApplication *)application {
NSLog(@"应用被终止");
}
APP启动加载
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// 设置window属性(iOS应用必须有一个主窗口UIWindow),初始化windows的大小和位置
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// 设置window的背景
self.window.backgroundColor = [UIColor whiteColor];
// 初始化KCMainViewController
ViewController *viewController = [[ViewController alloc]init];
// 带xib 文件的初始化方式
// self.window.rootViewController = [[BRootViewController alloc] initWithNibName:@"BRootViewController" bundle:[NSBundle mainBundle]];
// 设置自定义控制器的大小和window相同,位置为(0,0)
viewController.view.frame = self.window.bounds;
// 设置此控制器为window的根控制器,UIWindown必须有根控制器
self.window.rootViewController = viewController;
// 设置window为应用程序主窗口并设为可见
[self.window makeKeyAndVisible];
return YES;
}
UIApplication常用属性和方法
# 属性
// 显示应用图标右上角数字
application.applicationBadgeNumber = 8;
// 设置状态栏样式
application.statusBarStyle = UIStatusBarStyleBlackOpaque;
// 显示或隐藏状态栏
application.statusBarHidden = YES;
// 状态栏网络请求状态
application.networkActivityIndicatorVisible = YES;
# 方法
// 用默认浏览器打开网页
[application openURL:[NSURL urlWithString:@"http://www.baidu.com"]];
// 打电话
[application openURL:[NSURL urlWithString:@"tel://xxxxxxxxx"]];
// 发短信
[application openURL:[NSURL urlWithString:@"sms://xxxxxxxxx"]];