前面提到AppDelegate的实例在UIApplicationMain函数中被创建并调用。

AppDelegate的主要作用,可以从其继承类可以看出 class AppDelegate:UIResponder,UIApplicationDelegate。

1. UIResponder

UIApplication,UIView,UIViewController,UIWindow等需要处理event的类都需要继承这个类。
该类可以处理iOS的所有程序员需要处理的动作event,包括touch events和motion events。
在AppDelegate类中一般不需要对该类的继承的东西进行处理,具体处理放到实际的view,viewcontroller中去做。

2. UIApplicationDelegate

这个是AppDelegate类中重点需要override的变量。官方手册 UIApplicationDelegate
UIApplicationDelegate中负责管理app的各种状态,官方手册有详细的介绍。这里只记录一些最典型的例子。
关于app的各种状态参见下图,每个状态变化时都可以override父类的方法进行编程。
代理中所有函数的第一个参数为UIApplication的单例对象,通过这个参数可以获得app的信息,比如Window的引用等。
1.当点击app即将启动时,app状态由Not Running切换到Inactive,此时如果想进行编程,可以override函数:
application(_:willFinishLaunchingWithOptions:)

2.当app完成初始处理后,即将显示画面前,会执行函数

application(_:didFinishLaunchingWithOptions:)

3.当函数被active后,如果想在看到画面前执行一些动作



applicationDidBecomeActive(_:)

4.当app即将被切换到后台



applicationWillResignActive(_:)

5.当app已经进入后台(注意进入后台的程序会因为系统内存等原因,可能随时被suspended,即被系统关闭)



applicationDidEnterBackground(_:)

6.当app从后台进入前台



applicationWillEnterForeground(_:)

7.这个函数目前基本上用不到了,即使是被手动退出app(双击home,进入退出)也不会被执行。
如果想在程序退出时执行该函数,需要在Xcode中info.plist设置 Application does not run in background



applicationWillTerminate(_:)
在各method中打印出信息,可以测试其运行
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {
println("didFinishLaunchingWithOptions")
return true
} func applicationWillResignActive(application: UIApplication!) {
println("applicationWillResignActive")
} func applicationDidEnterBackground(application: UIApplication!) {
println("applicationDidEnterBackground")
} func applicationWillEnterForeground(application: UIApplication!) {
println("applicationWillEnterForeground")
} func applicationDidBecomeActive(application: UIApplication!) {
println("applicationDidBecomeActive")
} func applicationWillTerminate(application: UIApplication!) {
println("applicationWillTerminate")
}
}

App状态管理-AppDelegate的更多相关文章

  1. 对于React各种状态管理器的解读

    首先我们要先知道什么是状态管理器,这玩意是干啥的? 当我们在多个页面中使用到了相同的属性时就可以用到状态管理器,将这些状态存到外部的一个单独的文件中,不管在什么时候想使用都可以很方便的获取. reac ...

  2. 为了弄懂Flutter的状态管理, 我用10种方法改造了counter app

    为了弄懂Flutter的状态管理, 我用10种方法改造了counter app 本文通过改造flutter的counter app, 展示不同的状态管理方法的用法. 可以直接去demo地址看代码: h ...

  3. Redux状态管理方法与实例

    状态管理是目前构建单页应用中不可或缺的一环,也是值得花时间学习的知识点.React官方推荐我们使用Redux来管理我们的React应用,同时也提供了Redux的文档来供我们学习,中文版地址为http: ...

  4. vuex状态管理,state,getters,mutations,actons的简单使用(一)

    之前的文章中讲过,组件之间的通讯我们可以用$children.$parent.$refs.props.data... 但问题来了,假如项目特别大,组件之间的通讯可能会变得十分复杂... 这个时候了我们 ...

  5. Vue状态管理vuex

    前面的话 由于多个状态分散的跨越在许多组件和交互间各个角落,大型应用复杂度也经常逐渐增长.为了解决这个问题,Vue提供了vuex.本文将详细介绍Vue状态管理vuex 引入 当访问数据对象时,一个 V ...

  6. 理解vuex的状态管理模式架构

    理解vuex的状态管理模式架构 一: 什么是vuex?官方解释如下:vuex是一个专为vue.js应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证以一种可预测的 ...

  7. 简简单单的Vue3(插件开发,路由系统,状态管理)

    既然选择了远方,便只顾风雨兼程 __ HANS许 系列:零基础搭建前后端分离项目 系列:零基础搭建前后端分离项目 插件 路由(vue-router) 状态管理模式(Vuex) 那在上篇文章,我们讲了, ...

  8. vuex 状态管理 通俗理解

    解释:集中响应式数据管理,一处修改多处使用,主要应用于大中型项目. 安装: 第一:index.js:(注册store仓库) npm install vuex -D // 下载vuex import V ...

  9. Vue.js 2.x笔记:状态管理Vuex(7)

    1. Vuex简介与安装 1.1 Vuex简介 Vuex是为vue.js应用程序开发的状态管理模式,解决的问题: ◊ 组件之间的传参,多层嵌套组件之间的传参以及各组件之间耦合度过高问题 ◊ 不同状态中 ...

随机推荐

  1. JS获取整个HTML网页代码 - Android 集美软件园 - 博客频道 - CSDN.NET

    JS获取整个HTML网页代码 - Android 集美软件园 - 博客频道 - CSDN.NET JS获取整个HTML网页代码 分类: Android提高 2012-01-12 23:27 1974人 ...

  2. CF 459A(Pashmak and Garden-正方形给出2点求2点)

    A. Pashmak and Garden time limit per test 1 second memory limit per test 256 megabytes input standar ...

  3. nyoj-709-异形卵(水题)

    异 形 卵 时间限制:1000 ms  |  内存限制:65535 KB 难度: 描写叙述 我们探索宇宙,是想了解浩瀚星空的奥妙.但我们却非常少意识到宇宙深处藏匿的危急,它们无时无刻不紧盯着我们的地球 ...

  4. openstack之keystone

    一.什么是keystone 用于为openstack家族中的其它组件成员提供统一的认证服务,包括身份认证.令牌发放和校验.服务列表.用户权限定义等: 基本概念: 用户User:用于身份认证.一个用户可 ...

  5. HTTP学习笔记--HTTP报文

    报文流     HTTP报文在客户端.服务器和代理之间流动.“流入”.“流出”.“上游”.“下游”这些术语用来描述报文方向. 报文流入源端服务器     流入:流向服务器     流出:流向用户Age ...

  6. MySQl 存储过程+游标

    DROP PROCEDURE IF exists pro_Insertflightplan_stat;  create procedure pro_Insertflightplan_stat(exec ...

  7. 下载文件夹里面的所有文件,并压缩成.zip压缩包的形式

    http://www.aspsnippets.com/Articles/Download-multiple-files-as-Zip-Archive-File-in-ASPNet-using-C-an ...

  8. jQuery的扩展

    我们自己通过扩展jQuery来达到 “通过$.xx(paras)的形式来进行调用某个jQuery对象的xx(paras)方法”. 下面就是一个实例: (function(j){//这里的j是一个形参, ...

  9. SQL——找出某一字段中内容相同的数据

    SELECT columnName from dbo.tableName group by columnName having count(*)>1

  10. Jsunpack

    http://www.baidu.com/#wd=jsunpack&rsv_bp=0&tn=baidu&rsv_spt=3&ie=utf-8&rsv_sug3= ...