2

私はパズル ゲーム アプリケーションを作成しており、NSTimer を使用して時間 (つまり 01:20) を表示しています。アプリケーションがバックグラウンド状態になるとNSTimerが一時停止しますが、アプリケーションがバックグラウンド状態でも継続したいです。

たとえば、アプリがバックグラウンドになったときのタイマーカウントは15秒で、5秒間置いてフォアグラウンドになり、タイマーカウントを20秒に変更する必要があります

私はたくさん検索しましたが、良い答えが得られませんでした。どうすればこれを達成できるか教えてください。

4

5 に答える 5

1

その情報をファイルに書き出すか、終了時に時間をキャッシュする必要があります。次に、アプリケーションが再開したら、その値を読み取り、計算を行い、タイマーを再起動します。

AppDelegate では、アプリがバックグラウンドに移行するときに時間をファイルまたは NSUserDefaults に保存します。NSDate のクラス メソッドを呼び出して、簡単に格納できる整数値を取得できます。

+ (NSTimeInterval)timeIntervalSinceReferenceDate

アプリケーションの再開時に、値を読み込みます。現在の timeIntervalSinceReferenceDate を取得して減算します。経過した秒数が必要です。

于 2013-04-03T14:48:02.140 に答える
0
self.timer = [NSTimer scheduledTimerWithTimeInterval:0.5f
                                 target:self
                               selector:@selector(showTime)
                               userInfo:NULL
                                repeats:YES];

- (void)showTime
{
NSDate *now=[NSDate date];
NSDateFormatter *dateFormatter=[NSDateFormatter new];
[dateFormatter setDateFormat:@"HH:mm:ss"];
timeLabel.text=[dateFormatter stringFromDate:now];
}

この回答がお役に立てば幸いです....

于 2013-04-04T04:31:47.343 に答える
0

NSDate開始時間をオブジェクトとして保存しNSTimer、アプリの実行中に毎秒、現在の時間と開始時間の間の時間間隔を計算して表示時間を更新することをお勧めします。アプリがバックグラウンドに移行したときにタイマーを一時停止し (アプリの再起動時に多くの不要な起動が発生しないようにするため)、アプリがフォアグラウンドに移行するたびにタイマーを再起動します。

アプリを完全にシャットダウンしてもデータを保持したい場合 (バックグラウンドに長時間放置されているか、アプリ スイッチャーで閉じられているため)、適切なタイミングでデータをディスクに保存する必要があります。

于 2013-04-03T14:53:51.643 に答える