アプリがバックグラウンド状態になったときに何らかの処理を行っています。beginBackgroundTaskWithExpirationHandler()の下に配置したため、同じために 10 分を割り当てる必要があります。ただし、その前にアプリが停止されていると思います。私が実行しているタスクはメモリと CPU を集中的に使用するため、OS がアプリをサスペンド状態にしている可能性はありますか?
もしそうなら、これらの制限を回避する方法はありますか。(私はプライベート API を使用することにオープンです)。
バックグラウンド タスクを開始するためのコードは次のとおりです。
if([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)]){
if([[UIDevice currentDevice] isMultitaskingSupported]){
__block UIBackgroundTaskIdentifier bgTask;
UIApplication *application = [UIApplication sharedApplication];
bgTask = [application beginBackgroundTaskWithExpirationHandler:^{
[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self captureImage];
[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
});
}
}