Как использовать UIApplicationDidBecomeActiveNotification
Как использовать UIApplicationDidBecomeActiveNotification
?
Должен ли я объявить его в viewDidLoad
или viewWillAppear
для перезагрузки данных при переходе с фона на передний план.
Вызывается ли UIApplicationDidBecomeActiveNotification
только тогда, когда приложение приходит из фона на передний план?
Пожалуйста, помогите.
Спасибо.
Ответы
Ответ 1
Иногда бывает полезно иметь прослушиватель UIApplicationDidBecomeActiveNotification, когда вам нужно сделать некоторые действия в вашем контроллере просмотра при пробуждении от фона (в случае, если вы вошли в фоновый режим с помощью этого контроллера представления на экране). При таком пробуждении viewWillAppear не будет запущен!
Пример использования:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(someMethod) name:UIApplicationDidBecomeActiveNotification object:nil];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidBecomeActiveNotification object:nil];
}
- (void)someMethod
{
<YOUR CODE AT WAKE UP FROM BACKGROUND>
}
Конечно, вы также можете реализовать все, что вам нужно, в жизненном цикле класса делегата приложения.
Ответ 2
Вы получаете это уведомление, если ваше приложение было прервано телефонным звонком или push-уведомлением. Как правило, если ваше приложение становится активным на экране после прерывания.
Вы можете зарегистрировать любой класс, который загружается в память, когда приложение станет активным в качестве наблюдателя для этого уведомления.
Используйте следующий код в viewDidLoad
:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(someMethod:)
name:UIApplicationDidBecomeActiveNotification object:nil];
Используйте someMethod
для обработки этого уведомления. И не забудьте удалить этот класс в качестве наблюдателя в dealloc
:
[[NSNotificationCenter defaultCenter] removeObserver:self
name:UIApplicationDidBecomeActiveNotification
object:nil];
Ответ 3
ОП спросил о системных уведомлениях, которые были запущены, когда приложение задумано, а затем снова перенаправлено. Уведомление, предназначенное для обработки этой ситуации, - это UIApplicationDidEnterBackgroundNotification и UIApplicationWillEnterForegroundNotification. Если вы хотите получать уведомления о более широком спектре ситуаций, например, когда у вас есть системное уведомление, совершите телефонный звонок, придет SMS, или вы поднимите панель управления, а также закрепитесь, тогда вы захотите UIApplicationWillResignActiveNotification и UIApplicationDidBecomeActiveNotification. Важно признать, что они разные, поскольку вам может потребоваться только отреагировать, если ваше приложение связано с фоном, а не для других сценариев.