1

iOSアプリの開発にCordova2.1.0を使用しています。私はアプリ開発に不慣れなので、非常に基本的な質問があります。

applicationDidEnterBackgroundアプリがバックグラウンドに入ったときにアプリの制御を処理するメソッドを使用しています。UIApplicationDidEnterBackgroundNotificationしかし、アプリがバックグラウンドに入ったときに送信されるユーティリティを理解したいと思います。この通知とUIApplicationWillEnterForegroundNotification、システムから送信される他の通知(など)をどのように使用できますか。これらの通知のUSPは何ですか。

4

1 に答える 1

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];

                     }];
于 2012-10-08T10:28:28.113 に答える