iphone 4 sdk : detect return from background mode

How can I detect that an app has just returned from "background mode"? I mean, I don't want my app to fetch data (each 60 sec) when the user press the "home button". But, I'd like to make some "special" update the first time the app is in foreground mode.

How can I detect these two events:

  1. app going to background mode
  2. app going to foreground mode

Thanks in advance.

 

answer :

Here's how to listen for such events:

// Register for notification when the app shuts down
[[NSNotificationCenter defaultCenter] addObserver:self
selector
:@selector(myFunc)
name
:UIApplicationWillTerminateNotification
object:nil];

// On iOS 4.0+ only, listen for background notification
if(&UIApplicationDidEnterBackgroundNotification!=nil){
[[NSNotificationCenter defaultCenter] addObserver:self
selector
:@selector(myFunc)
name
:UIApplicationDidEnterBackgroundNotification
object:nil];
}

// On iOS 4.0+ only, listen for foreground notification

if(&UIApplicationWillEnterForegroundNotification!=nil){

[[NSNotificationCenter defaultCenter] addObserver:self
selector
:@selector(myFunc)
name
:UIApplicationWillEnterForegroundNotification
object:nil];

}

Note: The if(&SomeSymbol) checks ensure that your code will work on iOS 4.0+ and also on iOS 3.x - if you build against an iOS 4.x or 5.x SDK and set the deployment target to iOS 3.x your app can still run on 3.x devices but the address of relevant symbols will be nil, and therefore it won't try to ask for notifications that don't exist on 3.x devices (which would crash the app).

Update: In this case, the if(&Symbol) checks are now redundant (unless you really need to support iOS 3 for some reason). However, it's useful to know this technique for checking if an API exists before using it. I prefer this technique than testing the OS version because you are checking if the specific API is present rather than using outside knowledge of what APIs are present in what OS versions.

 

posted @ 2013-01-22 17:22  正在路上的小菜鸟  阅读(139)  评论(0编辑  收藏  举报