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