在我的应用程序中,我使用了计时器,
当第一次启动计时器时,我想在后台进入时停止该计时器,
所以我用这段代码来停止计时器,
- (void)applicationWillEnterForeground:(UIApplication *)application
{
FirstViewController *view = [[FirstViewController alloc]init];
[view.myticker invalidate]; //myticker is timer
view.myticker = nil;
[view release];
}
我在Foreground委托方法调用
时使计时器无效但是当来到viewcontroller时,旧计时器仍在运行,
当计时器进入后台时,如何使计时器无效?
答案 0 :(得分:4)
没有必要将你的计时器移动到你的代表,事实上这是一个非常糟糕的主意,因为它没有任何目的在那里!
您应该观察以下通知(取决于操作系统版本,后者在OS4 +中)...
UIApplicationWillResignActiveNotification
UIApplicationDidEnterBackgroundNotification
在视图控制器中观察这些并使计时器无效。当应用程序再次启动时会有相应的通知......
UIApplicationDidBecomeActiveNotification
UIApplicationWillEnterForegroundNotification
答案 1 :(得分:1)
在NSTimer
方法中声明您的AppDelegate
变量并进行综合。然后使用AppDelegate的sharedApplication
,在整个项目中使用该变量,不要创建任何新变量。还要对同一个实例变量执行invalidate
方法。
答案 2 :(得分:0)
在一个全局文件中创建一个时间。
在app delegate方法中,
- (void)applicationDidEnterBackground:(UIApplication *)application {
NSTimer *t ;
if ([t isValid]) {
[t invalidate];
}
}
使用上面的代码可以帮助你在应用程序进入后台时停止计时器。