NSTimer在背景中

时间:2013-08-08 10:45:36

标签: iphone nstimer

我是Iphone开发的新手。我有一个问题。我正在使用NSTimer,每秒更新一次UiLabel。现在我有两个问题:

  1. 当我的应用程序进入后台并在我打开应用程序之后。应用程序会挂起。
  2. 如果我在其他ui屏幕上接下来或返回,那么当我进入计时器屏幕时,我的标签再次显示为0.
  3. 任何人都可以帮助我。

    我正在使用的代码:

    timer = [NSTimer scheduledTimerWithTimeInterval: 1.0 target:self selector:@selector(updateCountdown) userInfo:nil repeats: YES];
    
    -(void) updateCountdown
    {
        secondsLeft--;
    
        //nits testing
        if(secondsLeft == 1)
        {
             [self.view addSubview:recipePage6View.view];
        }
    
    
    
        if (secondsLeft<0)
        {
            [timer invalidate];
            timer=nil;
            lblDisplayTimer.text =@"00:00:00";
    
        }
        else
        {
            hours = secondsLeft / 3600;
            minutes = (secondsLeft % 3600) / 60;
            seconds = (secondsLeft %3600) % 60;
    
            lblDisplayTimer.text = [NSString stringWithFormat:@"%02d:%02d:%02d", hours, minutes, seconds];
             //lblDisplayTimer.text = [NSString stringWithFormat:@"%02d:%02d",minutes,seconds];
         } 
    }
    

1 个答案:

答案 0 :(得分:4)

您需要设置一个特殊的后台计时器任务,并且在主运行循环中没有NSTimer,它在后台暂停。有关如何执行此操作的文档是here