我正在使用Cordova 2.1.0进行IOS应用程序开发。因为,我是应用程序开发的新手,我有一个非常基本的问题。
我正在使用applicationDidEnterBackground
方法在应用进入后台时处理应用控制。但我想了解应用程序进入后台时发送的UIApplicationDidEnterBackgroundNotification
的效用。我以何种方式使用此通知和系统发送的其他通知(如UIApplicationWillEnterForegroundNotification
等)。这些通知的USP是什么。
答案 0 :(得分:1)
根据文档,方法applicationDidEnterBackground:
告诉UIApplication
的代表该应用程序现在在后台。在Cocoa中,许多委托消息都有相应的UINotification
个也被发送。这也不例外。
该应用程序还会在调用此方法的同时发布
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];
}];