25

私のアプリデリゲートメソッドapplicationDidBecomeActive:は、アプリケーションの最初の起動時に2回呼び出されます。一度だけ実行したいコードの一部があります。applicationDidBecomeActive:

私は何をすべきか?

4

12 に答える 12

42

私は問題を手に入れました。位置情報サービスを使用しています。位置情報サービスのアラートで [OK] をタップした後に初めて起動すると、iOS の通常の動作である applicationDidBecomeActive がもう一度呼び出されます。

于 2012-04-25T04:41:47.153 に答える
16

アプリがアクティブになったときにコードを 1 回だけ呼び出したい場合は、2 つのメソッドから呼び出してみてください。

  1. didFinishLaunchingWithOptions
  2. applicationWillEnterForeground

からのみ呼び出す代わりにapplicationDidBecomeActive

于 2015-10-08T14:53:36.513 に答える
12

これは、位置情報またはプッシュ通知アラートによるものです。

ネイティブ ロケーション/プッシュ通知が閉じられた後、applicationDidBecomeActiveが呼び出されます。

于 2013-03-20T01:28:22.480 に答える
2

これが役立つかどうかはわかりませんが、位置情報サービスを使用しない完全に単純なアプリで同じ問題が発生し、それが幻想であることがわかりました. 私が得たロギングメッセージを見てください:

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 回報告しています。

私の場合、実行中のすべての動作をオフにすることでこれを防ぐことができました->出力を生成します。

于 2012-12-22T18:59:38.213 に答える
2

どうですか:

  • 増分applicationDidBecomeActive
  • アクセス許可要求のコールバック イベントまたはapplicationDidBecomeActive閉じたときに別のアラートをトリガーするその他のアラートの減少。
于 2016-07-01T03:29:01.067 に答える
2

Xcode 6 では、これが発生する可能性がある新しい理由があります。サイズ変更可能なシミュレーターでアプリを起動すると、applicationDidBecomeActive: が 2 回呼び出されます。

デフォルトのサイズ クラスでアプリを起動し、デフォルトを使用していた場合でも、最後に使用していたサイズを適用します。サイズ クラスの変更が適用されるたびに、applicationDidBecomeActive: が呼び出されます。

于 2014-09-18T01:29:32.877 に答える
0

おそらく、Interface Builder と AppDelegate コードでクラスのインスタンスを作成したことがありますか?

于 2012-04-24T19:36:31.973 に答える
0

アプリの起動時に一度だけ呼び出したいコードがある場合は、次を使用します

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

代わりは。

それ以外の場合、アプリケーションが再びアクティブになるたびに applicationDidBecomeActive が呼び出されるため、これは、ケースのように 2 回だけではなく、ユーザーが別のアプリに切り替えた後にアプリに戻るたびに呼び出されます。

于 2012-04-24T20:09:06.707 に答える