2

私は 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 が長整数値として表示されます。バックグラウンド タスクを停止する方法がわかりません。助けてください。

ありがとう

4

0 に答える 0