如何在应用程序进入后台之前调用场景方法?

Posted

技术标签:

【中文标题】如何在应用程序进入后台之前调用场景方法?【英文标题】:How to call scene method before application goes to background? 【发布时间】:2013-11-01 22:47:52 【问题描述】:

我需要在游戏进入后台之前暂停游戏,所以当再次进入前台时,我会在游戏中看到暂停对话框。为了显示暂停对话框,我有一个场景方法。我看到下面的方法是正确的地方:

-(void) applicationDidEnterBackground:(UIApplication*)application

    if( [navController_ visibleViewController] == director_ )
        [director_ stopAnimation];

我应该直接从导演runningScene 那里得到场景,将它投射到我的场景类中,然后向它发送暂停消息还是这样很丑?

【问题讨论】:

【参考方案1】:

在这种情况下,我认为通知是最干净和最安全的选择。您可以从 applicationDidEnterBackground 发布通知并接收您想要执行某些操作的任何位置,例如:

在应用代理中:

- (void)applicationDidEnterBackground:(UIApplication*)application 
   [[NSNotificationCenter defaultCenter] postNotificationName:@"EnteringBackground" object:nil];

在游戏场景中:

- (void)onEnter 
   [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showPausePopup) name:@"EnteringBackground" object:nil];


- (void)onExit 
   [[NSNotificationCenter defaultCenter] removeObserver:self];


- (void)showPausePopup:(NSNotification*)notification 
   // Code to show popup

【讨论】:

以上是关于如何在应用程序进入后台之前调用场景方法?的主要内容,如果未能解决你的问题,请参考以下文章

当应用程序进入后台时停止后台服务

当用户按下主页按钮但在应用程序进入后台之前,如何从应用程序窗口的 rootViewController 呈现 viewController? [复制]

当应用程序进入暂停状态时取消本地通知。(从后台删除)

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

远程通知不会在后台启动应用程序

安卓手机如何查看后台运行程序