Application的生命周期和调用

 iOS程序的启动执行顺序



UIApplication对象
用户与iOS设备交互时产生的事件(Multitouch Events,Motion Event,Remote Control Event)交由UIApplication对象来分发给control objects(UIControl)对应的target objects来处理并且管理整个事件循环,而一些关于app运行时重要事件委托给app delegate来处理。

App delegate对象
App delegate对象遵循UIApplicationDelegate协议,响应app运行时重要事件(app启动、app内存不足、app终止、切换到另一个app、切回app),主要用于app在启动时初始化一些重要数据结构;例如,初始化UIWindow,设置一些属性,为window添加rootViewController

View controller对象
View Controller有一个view属性是view层次结构中的根view,你可以添加子view来构建复杂的view;controller有一些viewDidLoadviewWillAppear等方法来管理view的生命周期;由于它继承UIResponder,所有还会响应和处理用户事件。

Documents和data model对象
data model对象主要用来存储数据。例如,饿了么app在搜索切换地址后,有历史记录搜索地址历史,当app下次启动时,读取和显示搜索地址历史。
document对象(继承UIDocument)用来管理一些或所有的data model对象。document对象并不是必须的,但提供一种方便的方式来分组属于单个文件或多个文件的数据。

UIWindow对象
UIWindow对象位于view层次结构中的最顶层,它充当一个基本容器而不显示内容,如果想显示内容,添加一个content view到window。
它也是继承UIResponder,所以它也是会响应和处理用户事件。

Viewcontrollayer对象
View对象可以通过addSubview和removeFromSuperview 等方法管理view的层次结构,使用layoutIfNeeded和setNeedsLayout等方法布局view的层次结构,当你发现系统提供view已经满足不了你想要的外观需求时,可以重写drawRect方法或通过layer属性来构造复杂的图形外观和动画。还有一点,UIView也是继承UIResponder,所以也能够处理用户事件
Control对象通常就是处理特定类型用户交互的View,常用的有button、switch、text field等。
除了使用ViewControl来构建view层次结构来影响app外观之外,还可以使用Core Animation框架的Layer对象来渲染view外观和构建复杂的动画。

应用程序的状态和多任务

Not running:app还没运行Inactive:app运行在foreground但没有接收事件Active:app运行在foreground和正在接收事件Background:运行在background和正在执行代码Suspended:运行在background但没有执行代码


  • application:willFinishLaunchingWithOptions: - 这个方法是你在启动时的第一次机会来执行代码
  • application:didFinishLaunchingWithOptions: - 这个方法允许你在显示app给用户之前执行最后的初始化操作
  • applicationDidBecomeActive: - app已经切换到active状态后需要执行的操作
  • applicationWillResignActive: - app将要从前台切换到后台时需要执行的操作
  • applicationDidEnterBackground: - app已经进入后台后需要执行的操作
  • applicationWillEnterForeground: - app将要从后台切换到前台需要执行的操作,但app还不是active状态
  • applicationWillTerminate: - app将要结束时需要执行的操作


现在启动程序看看执行的顺序:

1. 启动程序
①-[AppDelegate application:willFinishLaunchingWithOptions:]-[AppDelegate application:didFinishLaunchingWithOptions:]-[AppDelegate applicationDidBecomeActive:]

2. 按下home键
①-[AppDelegate applicationWillResignActive:]-[AppDelegate applicationDidEnterBackground:]

3. app在后台状态,点击app打开
①-[AppDelegate applicationWillEnterForeground:]-[AppDelegate applicationDidBecomeActive:]


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Tornado 的生命周期可以分为几个关键步骤: 1. 应用启动:在应用启动,需要创建 Tornado 的 Application 对象,并配置相关参数,比如路由映射、模板路径、静态文件路径等。同,也可以进行一些初始化操作,比如连接数据库、加载配置文件等。 2. 服务器启动:在应用启动后,需要通过 Tornado 提供的服务器对象(如 HTTPServer)来监听指定的端口,开始接收客户端请求。 3. 请求处理:当客户端发送请求到服务器,Tornado 会根据路由规则将请求分发给对应的处理器(handler)。处理器会执行相应的业务逻辑,并生成响应。 4. 异步处理:Tornado 支持异步编程,可以通过回调函数或协程来处理异步任务。在处理器中可以使用 `@gen.coroutine` 装饰器或 `async/await` 关键字来定义异步函数,并利用 Tornado 提供的异步库(如 `tornado.gen`)来实现异步操作。 5. 响应返回:当处理器完成业务逻辑并生成响应后,Tornado 会将响应返回给客户端。响应可以是 HTML 页面、JSON 数据等。 6. 服务器关闭:当应用需要关闭,可以调用服务器对象的关闭方法来停止监听端口,并关闭服务器。 总的来说,Tornado 的生命周期包括应用启动、服务器启动、请求处理、异步处理和服务器关闭等阶段。这些步骤组成了 Tornado 应用的运行流程,使得 Tornado 能够高效地接收、处理和响应客户端请求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值