【iOS】アプリがバックグラウンド・フォアグラウンド状態になった時の実行処理
今回はタイトルの通り、アプリがバックグラウンド・フォアグラウンド状態になった時の実行処理ついて書いてみます。
例えば、ホームボタンを押した際にデータを保存したいとか、再度アプリを起動した時に何らかの処理を実行させたいとか、色々な使い方が出来ると思います。
AppDelegateから通知
AppDelegateからバックグラウンド・フォアグラウンド状態になった時に呼び出されるメソッドがあります。
●アプリが非アクティブになりバックグランド実行になった際に呼び出される
– (void)applicationDidEnterBackground:(UIApplication *)application
●2回目以降の起動時に呼び出される(バックグラウンドにアプリがある場合)
– (void)applicationWillEnterForeground:(UIApplication *)application
これらのメソッド内からNSNotificationCenter を使って実行させたいメソッドへ通知を送信する処理をそれぞれ追記します。
//アプリが非アクティブになりバックグランド実行になった際に呼び出される - (void)applicationDidEnterBackground:(UIApplication *)application { NSNotification* n = [NSNotification notificationWithName:@"applicationDidEnterBackground" object:self]; // 通知を行う [[NSNotificationCenter defaultCenter] postNotification:n]; } //2回目以降の起動時に呼び出される(バックグラウンドにアプリがある場合) - (void)applicationWillEnterForeground:(UIApplication *)application { NSNotification* n = [NSNotification notificationWithName:@"applicationWillEnterForeground" object:self]; // 通知を行う [[NSNotificationCenter defaultCenter] postNotification:n]; }
NSNotificationCenterを生成
通知先ViewControllerのviewDidLoadに以下を追記します。
AppDelegateから通知が送られてきた際に、「selector」で指定したメソッドを実行することを設定します。
- (void)viewDidLoad { [super viewDidLoad]; // 通知受信の設定 NSNotificationCenter* nc = [NSNotificationCenter defaultCenter]; [nc addObserver:self selector:@selector(applicationDidEnterBackground) name:@"applicationDidEnterBackground" object:nil]; [nc addObserver:self selector:@selector(applicationWillEnterForeground) name:@"applicationWillEnterForeground" object:nil]; }
通知受信して実行されるメソッド
ここで通知を受け取ったメソッドを実行する処理を記述します。
//アプリが非アクティブになりバックグラウンド実行になった際に呼び出される - (void)applicationDidEnterBackground { #if defined(DEBUG) NSLog(@"applicationDidEnterBackground"); // バックグラウンド時になった時の実行処理 #endif } //2回目以降のフォアグラウンド実行になった際に呼び出される(Backgroundにアプリがある場合)--------------------------------------------------------------------------------- - (void)applicationWillEnterForeground { #if defined(DEBUG) NSLog(@"applicationWillEnterForeground"); // 2回目以降の起動時になった時の実行処理 #endif }
これで、アプリがバックグラウンド・フォアグラウンド状態になった時の処理が簡単に実行できます。
コメントをどうぞ