매우 긴 코어 데이터 삭제 작업이 92k의 일부 홀수 레코드로 실행하는 데 시간이 오래 걸립니다. 처음에는 UI 스레드를 잠그기 때문에 백그라운드 스레드에서 호출을 시도했습니다. 그러나 시뮬레이터에서 내가 알아 차 렸던 것은 앱을 배경으로 할 때이 작업이 멈추는 것입니다.백그라운드/포 그라운드 모드에서 코어 데이터 삭제가 오래 걸림
응용 프로그램이 10 분 동안 백그라운드에서 실행되었거나 실행이 허용되면 내 삭제가 계속 실행될 수 있도록 코드를 만들 수 있는지 궁금합니다. 나는 내 수업을 시작하면
나는 배경 큐합니다 다음
backgroundQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, nil);
을 그 시간이 코드는 UI가 더 반응 했는가
- (void)queueForDelete:(FlightRecording *)flight {
NSError *error = nil;
flight.deleteFlagValue = 1;
[managedObjectContext save:&error];
// Remove flights form Internal table dataStructure
[flightList removeObjectAtIndex:[tmpIndexPath row]];
[[self tableView] deleteRowsAtIndexPaths:@[tmpIndexPath] withRowAnimation:UITableViewRowAnimationFade];
//Queue flight for deletion in the background
dispatch_async(backgroundQueue, ^{
NSLog(@"Adding %@ to deletion Queue", flight.getFileName);
[self deleteFlight:flight];
});
[[self tableView] reloadData];
}
내 개체를 삭제하지만 여전히 걸리는 경우 약 5 분 ~ 10 분 (시뮬레이터에서) 내 개체를 삭제합니다. 배경/전경에 관계없이 응용 프로그램의 응답성에 영향을주기 때문에 사용자가 응용 프로그램을 배경으로 삭제 프로세스를 계속 실행할 수 있기를 바랍니다.
'deleteRowsAtIndexPaths'를 호출 했으므로'reloadData'를 호출 할 필요가 없습니다. – Paulw11