В iOS4 приложениеWillEnterForeground может вызываться перед applicationDidEnterBackground, и это создает проблему - PullRequest
3 голосов
/ 21 июля 2010

В iOS 4, если я быстро закрываю и заново открываю свое приложение, то (после вызова applicationWillResignActive ) есть шанс, что applicationWillEnterForeground будет вызван задолго до applicationDidEnterBackground и приводит к черному пустому экрану , так как приложение перешло в фоновое состояние сразу после состояния переднего плана.

это порядок, в котором он был напечатан в консоли:

* 1. applicationWillResignActive
2. applicationDidEnterBackground
3. applicationWillEnterForeground
4. applicationDidBecomeActive
1. applicationWillResignActive
3. applicationWillEnterForeground
2. applicationDidEnterBackground *

Как справиться с таким сценарием? и чтобы убедиться, что методы делегата приложения выполняются в правильном порядке?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 31 июля 2010

Держите счетчик для переключателей и игнорируйте переключатели, которые происходят в неправильном порядке. Примерно так:

-(void) handleSwitchToBackground {
  if ( myState == 0 ) { /* do background stuff */ }
  myState += 1;
}

-(void) handleSwitchToForeground {
  myState -= 1;
  if ( myState == 0 ) { /* do foreground stuff */ }
}

Если передний план происходит перед фоном, ни один из методов ничего не делает.

0 голосов
/ 31 июля 2010

Это происходит и со мной.

Только в моем случае это иногда случается, когда мое приложение получает локальное уведомление.

...