iOS 应用生命周期

版权声明:本文为博主原创文章,未经博主允许不得转载。 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"]];

猜你喜欢

转载自blog.csdn.net/qq_28142539/article/details/51062241