首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >检测应用程序何时进入我视图的背景的最佳方法是什么?

检测应用程序何时进入我视图的背景的最佳方法是什么?
EN

Stack Overflow用户
提问于 2012-01-26 07:16:35
回答 9查看 72.8K关注 0票数 80

我有一个视图控制器,它使用NSTimer来执行一些代码。

检测应用程序何时转到后台的最佳方法是什么,以便我可以暂停计时器?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2012-01-26 09:04:02

您可以让任何对应用程序何时进入后台接收通知感兴趣的类。这是将这些类与AppDelegate耦合的一个很好的替代方案。

在初始化所述类时:

代码语言:javascript
复制
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appWillResignActive:) name:UIApplicationWillResignActiveNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appWillTerminate:) name:UIApplicationWillTerminateNotification object:nil];

响应通知

代码语言:javascript
复制
-(void)appWillResignActive:(NSNotification*)note
{

}
-(void)appWillTerminate:(NSNotification*)note
{
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationWillResignActiveNotification object:nil];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationWillTerminateNotification object:nil];

}
票数 175
EN

Stack Overflow用户

发布于 2012-01-26 07:19:25

在您的应用程序AppDelegate上,iOS将调用(void)applicationDidEnterBackground:(UIApplication *)application方法。你可以把你的定时器停在那里。

票数 10
EN

Stack Overflow用户

发布于 2016-07-07 23:03:32

对于那些希望在Swift中做到这一点的人:

init

代码语言:javascript
复制
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(applicationWillResignActive), name: UIApplicationWillResignActiveNotification, object: nil)

deinit

代码语言:javascript
复制
NSNotificationCenter.defaultCenter().removeObserver(self, name: UIApplicationWillResignActiveNotification, object: nil)

响应通知:

代码语言:javascript
复制
dynamic private func applicationWillResignActive() {
    // Do things here
}

Apple鼓励我们在Swift中尽可能避免动态分派和Objective-C选择器,但这仍然是最方便的方法。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9011868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档