Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何使用UIApplicationIDBeactiveNotification_Ios_Objective C_Cocoa Touch - Fatal编程技术网

Ios 如何使用UIApplicationIDBeactiveNotification

Ios 如何使用UIApplicationIDBeactiveNotification,ios,objective-c,cocoa-touch,Ios,Objective C,Cocoa Touch,如何使用UIApplicationIDBecMeactivifIfication 我应该在viewdiload或viewwillbeen中声明它,以便在从后台到前台时重新加载数据 只有当应用程序从后台到前台时,uiapplicationdibecomeactivityfication才会被调用吗 请帮忙。 谢谢。有时,当您需要在从后台唤醒时在视图控制器中执行某些操作时(如果您在屏幕上使用此视图控制器进入后台),有一个UIApplicationIDBecomeActivenotify侦听器是很有用

如何使用
UIApplicationIDBecMeactivifIfication

我应该在
viewdiload
viewwillbeen
中声明它,以便在从后台到前台时重新加载数据

只有当应用程序从后台到前台时,
uiapplicationdibecomeactivityfication
才会被调用吗

请帮忙。
谢谢。

有时,当您需要在从后台唤醒时在视图控制器中执行某些操作时(如果您在屏幕上使用此视图控制器进入后台),有一个UIApplicationIDBecomeActivenotify侦听器是很有用的。在这种情况下,将不会触发唤醒视图

使用示例:

- (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
{
}

当然,您也可以在应用程序代理类生命周期中实现所有需要的功能。

如果您的应用程序被电话或推送通知中断,您将收到此通知。通常,如果您的应用程序在中断后在屏幕上处于活动状态

您可以注册在应用程序作为此通知的观察者变为活动状态时加载到内存中的任何类

viewDidLoad
中使用以下代码:

[[NSNotificationCenter defaultCenter] addObserver:self
                                     selector:@selector(someMethod:)
                                         name:UIApplicationDidBecomeActiveNotification object:nil];
使用
someMethod
处理此通知。不要忘了在
dealloc
中删除作为观察者的此类:

[[NSNotificationCenter defaultCenter] removeObserver:self 
                                            name:UIApplicationDidBecomeActiveNotification
                                          object:nil];

OP询问了当应用程序在后台启动,然后又在前台启动时,会触发哪些系统通知。设计用于处理这种情况的通知是UIApplicationIdentinterBackgroundNotification和UIApplicationWillEnterForegroundNotification。如果您希望在更广泛的情况下触发通知,例如当您收到系统通知、接听电话、收到短信或向上滑动控制窗格时,以及在后台,则需要UIApplicationWillResignActiveNotification和UIApplicationIDBecomeActiveNotification。认识到这些是不同的,这一点很重要,因为你可能只需要在你的应用程序是背景的情况下做出反应,而不需要在其他情况下做出反应。

一般情况下,最好还是添加一般类型的观察者(在这种情况下不一定如此)在视图中显示,在视图中删除将消失,因为在许多情况下,当控制器不在屏幕上时,您不需要监视事件。有时it事件会导致错误。在我监控的许多项目中都会出现提到的错误(=隐式问题)。这不是系统问题,而是架构问题。通常开发人员(尤其是初级开发人员)了解屏幕上的工作周期。但是他们改变了viewWill(确实)中的某些内容,并忘记了在那之后viewController可以仍然处于活动状态(例如在选项卡栏中),并继续接收现在在幕后处理的通知。
[[NSNotificationCenter defaultCenter] removeObserver:self 
                                            name:UIApplicationDidBecomeActiveNotification
                                          object:nil];