私のアプリデリゲートメソッドapplicationDidBecomeActive:
は、アプリケーションの最初の起動時に2回呼び出されます。一度だけ実行したいコードの一部があります。applicationDidBecomeActive:
私は何をすべきか?
私のアプリデリゲートメソッドapplicationDidBecomeActive:
は、アプリケーションの最初の起動時に2回呼び出されます。一度だけ実行したいコードの一部があります。applicationDidBecomeActive:
私は何をすべきか?
私は問題を手に入れました。位置情報サービスを使用しています。位置情報サービスのアラートで [OK] をタップした後に初めて起動すると、iOS の通常の動作である applicationDidBecomeActive がもう一度呼び出されます。
アプリがアクティブになったときにコードを 1 回だけ呼び出したい場合は、2 つのメソッドから呼び出してみてください。
didFinishLaunchingWithOptions
applicationWillEnterForeground
からのみ呼び出す代わりにapplicationDidBecomeActive
。
これは、位置情報またはプッシュ通知アラートによるものです。
ネイティブ ロケーション/プッシュ通知が閉じられた後、applicationDidBecomeActive
が呼び出されます。
これが役立つかどうかはわかりませんが、位置情報サービスを使用しない完全に単純なアプリで同じ問題が発生し、それが幻想であることがわかりました. 私が得たロギングメッセージを見てください:
2012-12-22 10:47:45.329 Bizarro[10416:907] start applicationDidBecomeActive:
2012-12-22 10:47:45.333 Bizarro[10416:907] end applicationDidBecomeActive:
2012-12-22 10:47:45.329 Bizarro[10416:907] start applicationDidBecomeActive:
2012-12-22 10:47:45.333 Bizarro[10416:907] end applicationDidBecomeActive:
よく見てください。時代を見てください。1 番目と 3 番目のメッセージの時刻は同じです。2 番目と 4 番目のメッセージの時刻は同じです。それらは同じメッセージです!これは Xcode のバグです。私のコードとは何の関係もありません。Xcode が同じログ メッセージを 2 回報告しています。
私の場合、実行中のすべての動作をオフにすることでこれを防ぐことができました->出力を生成します。
どうですか:
applicationDidBecomeActive
applicationDidBecomeActive
閉じたときに別のアラートをトリガーするその他のアラートの減少。Xcode 6 では、これが発生する可能性がある新しい理由があります。サイズ変更可能なシミュレーターでアプリを起動すると、applicationDidBecomeActive
: が 2 回呼び出されます。
デフォルトのサイズ クラスでアプリを起動し、デフォルトを使用していた場合でも、最後に使用していたサイズを適用します。サイズ クラスの変更が適用されるたびに、applicationDidBecomeActive
: が呼び出されます。
おそらく、Interface Builder と AppDelegate コードでクラスのインスタンスを作成したことがありますか?
アプリの起動時に一度だけ呼び出したいコードがある場合は、次を使用します
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
代わりは。
それ以外の場合、アプリケーションが再びアクティブになるたびに applicationDidBecomeActive が呼び出されるため、これは、ケースのように 2 回だけではなく、ユーザーが別のアプリに切り替えた後にアプリに戻るたびに呼び出されます。