从后台调用应用程序时调用方法

时间:2012-01-26 16:30:19

标签: objective-c ios background uiapplicationdelegate

在像Foursquare这样的应用程序中,当我单击“主页”按钮时,应用程序将转到后台。然后,当我点击它的图标时,它会在屏幕上加载回内容。

当我将我的应用程序发送到后台然后我回想起它时,它不会将内容加载回屏幕。我已在viewDidAppear方法中输入了我的代码,但未执行。

如何在应用程序内容变为活动状态时加载它?

3 个答案:

答案 0 :(得分:5)

您需要回复- (void)applicationDidBecomeActive:(UIApplication *)application- (void)applicationWillEnterForeground:(UIApplication *)application或同等的UIApplication通知。 UIViewController生命周期调用(如viewDidAppear)不会被应用生命周期转换触发。

答案 1 :(得分:3)

pmparkes建议是对的。您可以注册UIApplicationDidBecomeActiveNotificationUIApplicationWillEnterForegroundNotification。在调用这些方法(smparkes编写的)之后调用这些通知。在此通知的处理程序中执行您想要的操作。例如,在viewDidLoad中,您的控制器会注册以下通知:

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

不要忘记删除dealloc

[[NSNotificationCenter defaultCenter] removeObserver:self];

最后,doUpdate方法可以是以下

-(void)doUpdate:(NSNotification*)note
{
    // do your stuff here...
}

我建议你阅读UIApplicationDelegate class reference。特别是阅读监控应用程序状态更改

希望它有所帮助。

答案 2 :(得分:0)

假设您想要收听UIApplicationDidBecomeActiveNotification,这里有可能对您有帮助的ObjC代码。

[[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidBecomeActiveNotification
object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *note) {

    // custom code goes here.
}];
相关问题