正文
Swift - 程序进入后台,以及应用终止时调用的方法
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
在AppDelegate中有如下两个方法要注意:
applicationDidEnterBackground() 当应用进入后台时起作用
applicationWillTerminate() 当应用终止的时候起作用
有了这两个方法,我们就可以对程序数据进行保护。
比如当应用崩溃,内存不足被系统终止,程序在后台呆太久被终止掉时,可以通过这两个方法对操作数据进行保存,以免数据丢失。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | import UIKit @UIApplicationMain class AppDelegate : UIResponder , UIApplicationDelegate { var window: UIWindow ? func application(application: UIApplication , didFinishLaunchingWithOptions launchOptions: [ NSObject : AnyObject ]?) -> Bool { return true } //当应用进入后台时其作用 func applicationDidEnterBackground(application: UIApplication ) { saveData() } //当应用终止的时候起作用 func applicationWillTerminate(application: UIApplication ) { saveData() } func saveData(){ //获取导航控制器 let navigation = self .window?.rootViewController as UINavigationController //获取导航控制器的根视图控制器 var controller: ViewController = navigation.viewControllers.first! as ViewController //执行ViewController的自定义数据保存方法 controller.saveData() } func applicationWillResignActive(application: UIApplication ) { } func applicationWillEnterForeground(application: UIApplication ) { } func applicationDidBecomeActive(application: UIApplication ) { } } |
注意:self.windows表示storyboard中的UIWindow对象,也是所有视图的总容器。在iOS应用中只有一个UIWindow对象。
如果我们给导航控制器勾选了is Initial View Controller属性,UIWindow对象的rootViewController获取的就是勾选了is Initial View Controller属性的导航控制器。