ドキュメントによると、このメソッド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];
}];