2014-01-14 14 views
10

UIApplicationDidBecomeActiveNotificationの使い方は?UIApplicationDidBecomeActiveNotificationの使い方

バックグラウンドからフォアグラウンドに向かうときにデータをリロードするには、viewDidLoadまたはviewWillAppearに宣言する必要があります。

UIApplicationDidBecomeActiveNotificationは、アプリがバックグラウンドからフォアグラウンドに来たときにのみ呼び出されますか?

助けてください。おかげさまで

答えて

23

時にはあなたがバックグラウンドからのウェイクアップ(場合にはあなたは、画面上のこのビューコントローラでバックグラウンドに入った)上のビューコントローラで何らかのアクションを行う必要があるときUIApplicationDidBecomeActiveNotificationのリスナーを持っていると便利です。そのような目覚めでviewWillAppearはトリガーされません!使用の

例:

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(someMethod)  name:UIApplicationDidBecomeActiveNotification object:nil]; 
} 


- (void)viewWillDisappear:(BOOL)animated 
{ 
    [super viewWillDisappear:animated]; 

    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidBecomeActiveNotification object:nil]; 

}もちろん

- (void)someMethod 
{ 
    <YOUR CODE AT WAKE UP FROM BACKGROUND> 
} 

、あなたはまた、あなたのアプリのデリゲートクラスのライフサイクルに必要なすべてを実装することができます。

+0

お返事ありがとうございます。 – Annu

+0

はい私のために働く。どうもありがとう。あなたが私を救った:) – Annu

3

あなたのアプリが通話またはプッシュ通知によって中断された場合、この通知が届きます。一般に、中断後にアプリケーションが画面上でアクティブになっている場合。

アプリケーションがこの通知のオブザーバーとしてアクティブになる瞬間までにメモリにロードされているクラスを登録することができます。 viewDidLoadのコード次

用途:

[[NSNotificationCenter defaultCenter] addObserver:self 
            selector:@selector(someMethod:) 
             name:UIApplicationDidBecomeActiveNotification object:nil]; 

使用someMethodこの通知を処理します。そしてdeallocにオブザーバーとして、このクラスを削除することを忘れないでください:

[[NSNotificationCenter defaultCenter] removeObserver:self 
              name:UIApplicationDidBecomeActiveNotification 
              object:nil]; 
+3

一般的なケースでは、viewWillAppearで一般的なタイプのオブザーバを追加したり(この場合は必ずしもそうではない)、viewWillAppearで削除し、viewWillDisappearで削除することは、コントローラがオンでない間にイベントを監視する必要がない画面。場合によってはイベントがエラーにつながることがあります。 – malex

+1

エラーが発生するケースを教えてください。 –

+0

私が監視した多くのプロジェクトでは、言及されているエラー(暗黙的な問題)が発生します。システムの問題ではなく、アーキテクチャの問題です。通常、開発者(特にジュニア開発者)は画面上の作業サイクルを理解しています。しかし、彼らはviewWill(Did)で何かを消してしまい、そのviewControllerがまだ生きている(例えばタブバーで)ことができた後、忘れてしまって、今シーンの後ろで扱われている通知を受け取り続ける。 – malex

1

OPは、アプリがバックグラウンドにされたときに発生システム通知について尋ねてから、再度前景化。この状況を処理するために設計された通知は、UIApplicationDidEnterBackgroundNotificationおよびUIApplicationWillEnterForegroundNotificationです。システム通知、電話、SMSの着信、コントロールペインのスライドアップなど、さまざまな状況に対応した通知が必要な場合は、バックグラウンドが必要ですUIApplicationWillResignActiveNotificationおよびUIApplicationDidBecomeActiveNotificationです。アプリがバックグラウンドである場合にのみ反応する必要があり、他のシナリオでは反応しない可能性があるため、これらが異なることを認識することが重要です。