根据文档,该方法applicationDidEnterBackground:
告诉UIApplication
' 代表应用程序现在在后台。在 Cocoa 中,许多委托消息都有相应UINotification
的 s 也被发送。这也不例外。
根据文档:
应用程序还会UIApplicationDidEnterBackgroundNotification
在调用此方法的同时发布通知,让感兴趣的对象有机会响应转换。
因此,如果您的对象图中存在需要响应状态转换的对象,它们可以观察到此通知。除了允许图中的所有对象响应应用程序状态转换之外,我不确定是否真的有一个未说明的目的。我想如果你有一个长时间运行的任务要在应用程序转换到后台任务时在对象层次结构的某个地方执行,你可以使用beginBackgroundTaskWithExpirationHandler:
类似于你在applicationDidEnterBackground
.
编辑:
// example, save NSArray *_myArray to disk when app enters background
// this is contrived, and untested, just meant to show how you can
// observe the UIApplicationDidEnterBackgroundNotification and save state
// in an arbitrary point in the object graph. (as opposed, or in addition to, the
// application's delegate.
// long-running tasks, e.g. web service connections, etc. will need to
// get a background task identifier from the UIApplication and manage that.
__block id enteredBackground = nil;
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
enteredBackground = [center addObserverForName:UIApplicationDidEnterBackgroundNotification
object:nil
queue:nil
usingBlock:^(NSNotification *note) {
[_myArray writeToFile:@"/path/to/you/file" atomically:YES];
}];