追寻逝去的时光


  • Home

  • Archives

  • Tags

iOS 应用生命周期

Posted on 2019-10-10 | In 随笔

1. APP 状态

APP 状态 描述
Not running 未启动或已被终止
Inactive APP正在前台运行,但是还不能接受触控事件,该过程可能正在执行其它代码,这个状态不会太久。
Active APP正在前台运行,可以响应事件。APP正常运行时候的状态,并且响应用户状态。
Background 此时执行代码的时候,APP不在屏幕上显示。当用户退出应用时候,系统在暂停应用前,会将APP切置background状态。另外一种情况是,系统先将APP在后台启动,提供后台间隙来处理类似网络下载、定位、远程消息通知处理的事件。尽量不要在后台进行任务。
Suspended  

2. 状态切换

APP_life_cycle

3. 系统回调

1. Did Finish Launching

当用于启动完成时候调用,可以在这里执行自定义代码

1
2
3
4
5
6
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions:
[UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // 应用启动之后,第一个执行自定义代码的地方
    return true
}

2. Will Resign Active

第二个被调用的方法。

  • 当APP从foreground 状态或 active 状态离开的时候调用
  • 当用户退出应用的时候调用
  • 系统闹钟或电话等中断事件发生的时候调用

这个方法适合暂停正在进行的任务或者保存用户的数据和进度。

1
2
3
4
5
6
func applicationWillResignActive(_ application: UIApplication) {
    /*
    active -> inactive 时候调用。电话、闹钟会触发,用户退出应用到后台过程中也会触发。
    在这个方法中,适合暂停一些正在进行的任务。比如:定时器、图形渲染回调、正在进行的游戏等。
    */
}

3. Did Enter Background

在 applicationWillResignActive(_:) 方法之后调用。此时应用已经在后台状态。

1
2
3
4
5
6
7
8
9
10
11
func applicationDidEnterBackground(_ application: UIApplication) {
    /*
    在这个方法中适合做的事情
      1. 释放公共资源 
      2. 保存用户数据
      3. invalidate 定时器
      4. 保存APP状态相关数据,用于恢复到当前状态(后续APP可能会被终止)
  
    当APP 拥有后台运行权限的时候,这个方法可以当做 applicationWillTerminate:使用
    */
}

4. Will Enter Foreground

background -> active 中间发生 ,在applicationDidBecomeActive(_:) 之前调用。这个方法可以用来取消在 background 中进行的各种操作。

1
2
3
func applicationWillEnterForeground(_ application: UIApplication) {
    /* background -> active 间隙发生
}

5. Did Become Active

inactive -> active 时候发生;用户忽略打断时候也会发生 (电话、闹钟)

1
2
3
4
5
6
7
func applicationDidBecomeActive(_ application: UIApplication) {
    /*
     适合
        1. 重启inactive时候被暂停或者未尚未启动的任务
        2. 如果之前在后台,刷新用户界面
    */
}

6. Will Terminate

这个方法通知APP,APP 将被终止,并从内存中清除。和 applicationDidEnterBackground(_:) 方法有一些类似,用于不一样的类型的APP

1
2
3
4
5
func applicationWillTerminate(_ application: UIApplication) {
    /*
    APP即将被终止时候调用,可以适当保存数据,也可以参考applicationDidEnterBackground:.
    */
}

参考: Apple Education. “App Development with Swift.” Apple Inc. - Education, 2019. Apple Books.

没事别乱点 »
1 … 10 11 12 … 101
© 2025 Dikey King