Pre*_*van 7 iphone cocoa-touch objective-c uiapplicationdelegate ios
在我的应用程序中,当用户点击主页按钮时,我将数据保存在NSUserDefaults.应用程序在后台运行.当用户重新启动应用程序时,我使用该方法applicationWillEnterForeground显示已保存的数据.
但是,当用户双击主页按钮并通过在应用程序上选择减号退出应用程序时,我需要在相同的用户默认值中保存不同的数据.但是当我退出时applicationWillTerminate,有时会调用应用程序,有时则不会.
那么,我如何区分应用程序是最小化还是退出?
每当用户点击一次并且应用程序将在那时进入后台,applicationDidEnterBackground总是调用.在此方法中,您可以临时更新/存储NSUserDefaults值.
如果以防万一,应用程序将再次进入前台而不使用双击终止,applicationDidBecomeActive将调用,您可以再次更新/删除临时存储的NSUserDefaults值.如果用户通过双击退出应用程序,则存储的值将保留在NSUserDefaults中.
关于UIApplicationDelegate方法之间的区别,请参阅UIApplicationDelegate协议参考.applicationDidEnterBackground:按下主页按钮时将始终调用.但似乎applicationWillTerminate:并不能保证被称为.
如果您的应用未在前台运行,则可以处于后台模式或处于挂起模式.请参阅iOS应用程序编程指南 - 应用程序状态和多任务处理的 "应用程序启动周期"部分.
当应用程序在后台运行并监视事件时,applicationWillTerminate:将在终止时调用.当应用程序暂停时,它不会.请参阅"应用程序终止"部分中的说明:
即使您使用iOS SDK 4及更高版本开发应用程序,您仍然必须准备好在没有任何通知的情况下杀死您的应用程序.用户可以使用多任务UI显式杀死应用程序.此外,如果内存受限制,系统可能会从内存中删除应用程序以腾出更多空间.暂停的应用程序不会收到终止通知,但如果您的应用程序当前正在后台运行(并且未暂停),系统将调用
applicationWillTerminate:您的应用程序委托的方法.您的应用无法通过此方法请求额外的后台执行时间.