如何使用UIApplicationDidBecomeActiveNotification
?
我应该在viewDidLoad
或viewWillAppear
中声明它,以便在从背景到前景时重新加载数据。
只有当应用从背景到前景时才会调用UIApplicationDidBecomeActiveNotification
吗?
请帮忙。 感谢。
答案 0 :(得分:26)
当你需要在视图控制器中从后台唤醒时有一个 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>
}
当然,您也可以在app delegate类生命周期中实现所需的一切。
答案 1 :(得分:4)
如果您的应用被电话或推送通知中断,您会收到此通知。通常,如果您的应用程序在中断后在屏幕上处于活动状态。
您可以注册任何类,当应用程序将作为此通知的观察者激活时加载到内存中。
在viewDidLoad
中使用以下代码:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(someMethod:)
name:UIApplicationDidBecomeActiveNotification object:nil];
使用someMethod
来处理此通知。并且不要忘记在dealloc
中删除此类作为观察者:
[[NSNotificationCenter defaultCenter] removeObserver:self
name:UIApplicationDidBecomeActiveNotification
object:nil];
答案 2 :(得分:2)
OP询问了当应用程序背景化然后再次前瞻时触发的系统通知。旨在处理这种情况的通知是UIApplicationDidEnterBackgroundNotification和UIApplicationWillEnterForegroundNotification。如果您希望在更广泛的情况下触发通知,例如当您收到系统通知时,请拨打电话,收到短信,或者您向上滑动控制面板,以及背景,然后您将需要UIApplicationWillResignActiveNotification和UIApplicationDidBecomeActiveNotification。重要的是要认识到这些是不同的,因为如果你的应用程序是后台的,你可能只需要做出反应,而不是其他场景。