AppDelegate でのバックグラウンド/フォアグラウンド メソッドの使用
-
27-10-2019 - |
質問
アプリにマルチタスクを実装する予定です。それを行うための多くの方法をここで見ることができます AppDelegate
のように applicationWillResignActive
, applicationDidEnterBackground
, applicationWillEnterForeground
, ...
しかし....これらを使用する方法も、ViewController に含まれていない理由もわかりません。彼らが何のためにここにいるのかも。
つまり :アプリがバックグラウンドで起動すると、ユーザーがどのビューにいるのかわかりません。アプリがフォアグラウンドになったときに、たとえばビューを更新するために何をすべきか、何を呼び出すことができるかをどうやって知ることができるでしょうか?
これらのメソッドが各ビューコントローラーのどこにあるかは理解できたでしょうが、ここでは、それらが具体的に何に使用できるのかがわかりません...
これらのメソッドに物事を実装する方法を理解するのを手伝ってもらえますか?
解決
各オブジェクトは UIApplicationDidEnterBackgroundNotification
アプリがバックグラウンドになったときに通知します。したがって、アプリがバックグラウンドになったときにコードを実行するには、必要な場所でその通知を聞くだけです。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(appHasGoneInBackground:)
name:UIApplicationDidEnterBackgroundNotification
object:nil];
リスナーを聞く必要がなくなったら、忘れずにリスナーを解放してください。
[[NSNotificationCenter defaultCenter] removeObserver:self];
そして何よりも、次の通知を使用して同じようにプレイできます。
UIApplicationDidEnterBackgroundNotification
UIApplicationWillEnterForegroundNotification
UIApplicationWillResignActiveNotification
UIApplicationDidBecomeActiveNotification
他のヒント
iOSは「デリゲート」デザインパターンを採用しているため、これらはどのView Controllerにも含まれていません。このパターンでは、必要に応じてメソッドがクラス(この場合はアプリケーションのApp Delegate)で確実に起動します。
学習プロセスとして、NSLogをこれらのメソッドに入れて、いつ起動されるかを確認してみませんか? ジェネラコディセタグプレ