私は beginBackgroundTaskWithExpirationHandler を使用して、アプリケーションをバックグラウンドで実行するための 10 分間の追加時間を取得しています。ただし、指定された 10 分以内にアプリケーションがフォアグラウンドになった場合は、このバックグラウンド タスクを停止する必要があります。私のコードは次のとおりです
- (void)applicationDidEnterBackground:(UIApplication *)application
{
bgTask = [application beginBackgroundTaskWithExpirationHandler: ^ {
NSLog(@"invalidate back task in didenter %@",[application backgroundTimeRemaining]);
if (bgTask != UIBackgroundTaskInvalid) {
[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}
}];
//Background tasks require you to use asyncrous tasks
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"\n\nRunning in the background inside DidEnterBackground %f!\n\n", [application backgroundTimeRemaining]);
while ([application backgroundTimeRemaining] > 1.0) {
NSLog(@"\n\nRunning in background %f!\n\n", [application backgroundTimeRemaining]);
sleep(5);
}
[application endBackgroundTask: bgTask];
bgTask = UIBackgroundTaskInvalid;
});
}
そして、アプリがフォアグラウンドになると、このようにバックグラウンドタスクを終了しています
- (void)applicationWillEnterForeground:(UIApplication *)application
{
[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}
bgTask は .h ファイルでグローバルに宣言されます。アプリがフォアグラウンドになると、バックグラウンド タスクが引き続き実行され、backgroundTimeRemaining が長整数値として表示されます。バックグラウンド タスクを停止する方法がわかりません。助けてください。
ありがとう