0

アプリがフォアグラウンドにあるときに、着信や SMS などの割り込みを処理する方法を知りたいです。Apple のドキュメントを読んだところ、アプリが一時的に非アクティブな状態になると書かれています。「applicationWillResignActive」関数が呼び出されます。また、タイマーの停止、定期的なタスク、メタデータ クエリの実行などを実行する必要があり、アクティブな状態に戻ったら、これらのタスクを無効にする必要があります。タイマーや定期的なタスクと言うとき、彼らはどのような種類のタスクを指していますか。そして、これらのコーディングの賢明さをどのように確立できますか。どんな助けでも大歓迎です。ありがとう

4

1 に答える 1

1

はい、一時的な中断を受け取ると、UIApplication から次のメソッドが呼び出されます [Apple のドキュメント] :

- (void)applicationWillResignActive:(UIApplication *)application

それらがタイマーで参照しているタスクと定期的なタスクは、タイマーで定期的に実行されている種類のタスクです。たとえば、タイマーをバックグラウンドで実行して、ビューのコンテンツを更新することができます。次に、アプリケーションがアクティブに辞退するとき、そのタイマーを停止する必要があります。

たとえば、10 秒ごとにタスクを実行するタイマーを実行しているとします。

// AppDelegate.m

// When application becomes active the timer is started
- (void)applicationDidBecomeActive:(UIApplication *)application {

    self.timer = [NSTimer scheduledTimerWithTimeInterval:10.0
                                                  target:self
                                                selector:@selector(scheduledTask:)
                                                userInfo:nil
                                                 repeats:YES];
}

// When the application will resign active the timer is stopped
- (void)applicationWillResignActive:(UIApplication *)application {

    [self.timer invalidate];
    self.timer = nil;
 }

スケジュールされたタスクは次のようになります。

- (void)scheduledTask:(NSTimer *)timer {

    // Up to you... for instance: web service call
}
于 2012-10-09T08:25:56.967 に答える