1

UIApplicationDidBecomeActiveNotification に登録し、イベントを適切に受け取ることができます。ただし、アプリがまだ実行されている間にこれらの通知を受け取ることがあります。アプリの再起動/再開をトリガーするメモリの問題が疑われましたが、これが事実であることを確認できませんでした (同時にメモリの警告が表示されました)。アプリの実行中にこれらのメソッドが呼び出される理由 (呼び出しなし、ロックなしなど) はありますか?

私はこれらの通知に登録しています:

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

(これは、dispatch_once を使用してシングルトン コンストラクターで 1 回実行されます)

対応する機能:

-(void)appDidBecomeActiveNotif:(NSNotification*)notif
{
  NSLog(@"appDidBecomeActiveNotif called");
}

-(void)appWillResignActiveNotif:(NSNotification*)notif
{   
  NSLog(@"appWillResignActiveNotif called");
}

ここにいくつかのログがあります:

2013-04-11 09:28:11.401 App[1499:907] appWillResignActiveNotif
2013-04-11 09:28:13.505 App[1499:907] appDidBecomeActiveNotif
4

1 に答える 1

1

これは、ドキュメントがこれらの通知について述べていることです:

UIApplicationDidBecomeActiveNotification アプリケーションがアクティブになったときに投稿されます。イベントを受信して​​いるとき、アプリケーションはアクティブです。アクティブなアプリケーションは、フォーカスがあると言えます。起動後にフォーカスを取得し、オーバーレイ ウィンドウがポップアップするかデバイスがロックされるとフォーカスを失い、デバイスのロックが解除されるとフォーカスを取得します。

UIApplicationWillResignActiveNotification アプリケーションがアクティブではなくなり、フォーカスを失ったときに通知されます。イベントを受信して​​いるとき、アプリケーションはアクティブです。アクティブなアプリケーションは、フォーカスがあると言えます。起動後にフォーカスを取得し、オーバーレイ ウィンドウがポップアップするかデバイスがロックされるとフォーカスを失い、デバイスのロックが解除されるとフォーカスを取得します。

それで、オーバーレイウィンドウのポップアップがありますか、それともデバイスをロックしていますか?

また、AppDelegate のメソッドを使用してこれらのイベントをリッスンしてみませんか?

編集

問題は、ユーザーにその場所を使用するように求める MapKit のポップアップにあるようです。

于 2013-04-11T08:16:08.267 に答える