iOS开发基础 - APP生命周期及启动页面
2016-03-25 10:46
381 查看
UIApplicationMain(argc, argv, nil, NSStringFromClass([PSBAppDelegate class])); //第三个参数,传入一个类名(Class),这个类必须是UIApplication类的子类,这个函数UIApplicationMain他会创建UIApplication子类的对象,如果传nil,只创建UIApplication类的对象。 //UIApplication对象不断检测应用程序的当前状态。当操作系统修改了应用程序的当前状态,会发送通知,UIApplication会检测到这个通知。 //第四个参数,传入代理类的名字,通过名字,可以获得Class,可以创建一个代理对象。 //AppDelegate是遵从协议的类,会创建出遵从协议的对象,是UIApplication对象的代理. //当UIApplication对象检测到当前程序状态改变,委托Delegate对象调用协议上有的方法,处理问题。 【APP的生命周期】从主入口开始—> 进入前台—> 然后注销—> 然后进入后台—> 再进入前台 【注】下面的所有方法不是自己写的 是APP自动生成的 我们只是在该调用方法的特殊阶段 来调用方法 //这个方法是整个APP的主入口 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; //NSLog会打印字符串到debug区,而不是iOS屏幕 NSLog(@"程序被载入完毕"); return YES; } //将要注销 - (void)applicationWillResignActive:(UIApplication *)application { //程序将要进入非活动状态,如切换到后台,或来电打断 NSLog(@"即将进入非活动状态"); } //进入后台 - (void)applicationDidEnterBackground:(UIApplication *)application { //程序已经进入后台 //释放掉占用空间大的对象,储存当前状态,记下需要恢复的对象。 NSLog(@"已经进入后台"); } //从后台进入前台的过程 - (void)applicationWillEnterForeground:(UIApplication *)application { //即将进入台 //跟上述方法相反,恢复相关对象。 NSLog(@"即将进入前台"); } //当前APP 已经能够看到界面了 进入前台 - (void)applicationDidBecomeActive:(UIApplication *)application { //恢复活动状态 NSLog(@"恢复活动状态"); } 运行结果: //第一次运行(编译器编译之后运行) 程序已经进入活动状态 -[AppDelegate applicationDidBecomeActive:] //第一次退出 将要注销活动状态 -[AppDelegate applicationWillResignActive:] 程序已经进入后台 -[AppDelegate applicationDidEnterBackground:] //第二次运行(手动点击图标运行) 将要进入前台 -[AppDelegate applicationWillEnterForeground:] 程序已经进入活动状态 -[AppDelegate applicationDidBecomeActive:] //第二次退出 将要注销活动状态 -[AppDelegate applicationWillResignActive:] 程序已经进入后台 -[AppDelegate applicationDidEnterBackground:] 创建启动页面(默认为系统自己创建的ViewController) self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds]; self.window.backgroundColor = [UIColor whiteColor]; FirstViewController *firstVC = [[FirstViewController alloc]init]; self.window.rootViewController = firstVC; [self.window makeKeyAndVisible]; return YES;
相关文章推荐
- Android系列--DOM、SAX、Pull解析XML
- 微信公众平台开发之会员卡
- iOS开发~CocoaPods使用详细说明
- iOS中url的特殊字符转换
- Android编程注意事项
- iOS-打包上传遇到的启动页的问题
- 实验一 MiniOS
- 集成支付宝钱包支付ios SDK的方法和经验
- App上传打包Archive时报错 或iTunes被拒 可能原因及决绝方案
- Android 实现串口的移植
- Android 实现串口的移植
- Android 实现串口的移植
- Android Touch事件传递机制解析
- ios 企业版ipa 服务器发布
- 怎么设置viewpager在使用setCurrentItem的滑动速度
- android4.x 模拟器 出现软键盘
- Android之LayoutInflater详解
- 掘金 Android 导航改进过程
- Android使用fitsSystemWindows属性实现--状态栏【status_bar】各版本适配方案
- 2015最流行的Android组件、工具、框架大全