2016-03-01 2 views
4

Я создаю мобильную игру, и у меня есть NSTimer для моего секундомера. Все работает нормально, за исключением случаев, когда я сворачиваю приложение (нажмите на главный экран), или когда он прерывается, например, по телефону, NSTimer продолжает работать в фоновом режиме, когда приложение не используется.Определить, когда приложение сведено к минимуму (iOS)

Мне нужно аннулировать этот таймер, когда приложение минимизируется/прерывается и создает новый таймер, когда приложение возобновляется. Какие методы обрабатываются, когда приложение свернуто и возобновлено?

+5

"свернутое" неправильный термин. Вам нужны 'applicationWillResignActive' и' applicationDidBecomeActive'. Возможно, вам также нужен 'applicationDidEnterBackground'. Это все делегированные методы 'UIApplicationDelegate'. – Avi

+0

В дополнение к вызовам делегата приложения вы также получаете уведомления. Ознакомьтесь с жизненным циклом приложения здесь: https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/TheAppLifeCycle/TheAppLifeCycle.html – Stefan

ответ

6

Вы можете аннулировать таймер AppDelegate в UIApplication метод делегата applicationDidEnterBackground таким образом,

- (void)applicationDidEnterBackground:(UIApplication *)application { 
    [timer invalidate]; 
    timer = nil; 
} 

И создать новый таймер в методе applicationWillEnterForeground