2011-11-30 2 views
0

私はカウントダウンタイマーアプリを実行しようとします。アプリが来るとタイマーがアップグレードしないBackground to Foreground

私は

、背景からForground、1秒の背後にあるたびに私のタイマスタートに来たときのアプリは、このコードでforgroundに来たときにバックグラウンドでアプリの実行が時間の間の差分を取得する&とき、私は、システムの時間を持って、

 NSDate *oldDate = [dateFor dateFromString:oldD]; 
     NSLog(@"Old Date in Timer : %@",oldDate); 

     NSDate *newcurrentdate = [NSDate date]; 
     NSLog(@"NEWCURRENTDATE:%@",newcurrentdate); 

     NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
     NSUInteger unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit; 
     NSDateComponents *componentsss = [gregorianCalendar components:unitFlags 
                   fromDate:oldDate 
                   toDate:newcurrentdate 
                   options:0]; 
     [gregorianCalendar release]; 

これで私はdiffを得ました。特定秒間アプリは、背景から前景に来

と更新タイマのための私のタイマーコードにこの秒を追加するとき、

 ticks =ticks + 1;  
     if(ticks > 59) 
     { 
      minute = minute + 1; 
      ticks = 0; 
      if(minute > 59) 
      { 
       hour = hour + 1; 
       minute = 0; 
       if(hour > 23) 
       { 
        hour = 0; 
       } 
      } 
     } 

時間が初めて起動したときにそれがうまく動作しますが、forgroundする背景から来るときそれはタイマー

私はこれをどのように行うことができます

私は私のコードで1秒を追加しようとするが、その特定のタイマー値を与えていない、毎回の後ろに1秒で起動しますか?

+0

どのように「ダニ」を受け取っていますか? NSTimerを使用していますか? –

答えて

0

変数をインクリメントしてダニを数えるのではなく、timeIntervalSinceNowまたはtimeIntervalSinceDateを使用して、現在の時刻と開始日の差を簡単に取得できますか?その場でこの間隔から分と時間を取得するには、次の操作を行うことができ

minute = ((int) (ticks/60)) % 60; 
hour = ((int) (ticks/3600)) % 24; 

これは、はるかに正確なタイミングを与える必要があります。

関連する問題