Я загружаю текстовый файл из Firebase Function, анализирую данные из этого файла и затем вставляю данные в sqlite в моем приложении.У меня есть более 1 000 000 записей в этом текстовом файле.Это прекрасно работает, когда приложение находится в foregroundMode.Я хочу выполнить эту задачу, когда приложение находится в фоновом режиме, но анализ и вставка приостанавливается, когда приложение переходит в фоновый режим.
вот код, который я использую,
var backgroundDownload3 : UIBackgroundTaskIdentifier?
func downloadBook(at indexPath : IndexPath) {
backgroundDownload3 = UIApplication.shared.beginBackgroundTask(expirationHandler: {
if let task = backgroundDownload3 {
UIApplication.shared.endBackgroundTask(task)
backgroundDownload3 = UIBackgroundTaskIdentifier.invalid
}
})
DispatchQueue.global().async {
self.fetchInteractionData(at: indexPath)
}
}
func fetchInteractionData(at indexPath : IndexPath){
//Firebase Function to download textFile
//download completed
downloadTask.observe(.success) { snapshot in
self.parseAndSaveToDataBase(fileName : name, at: indexPath)
}
}
func parseAndSaveToDataBase(fileName : String, at indexPath : IndexPath) {
//Parsing data from text file
//batch Insert (500 records) with db.transaction
// Once all the record are inserted
if let task = backgroundDownload3 {
UIApplication.shared.endBackgroundTask(task)
backgroundDownload3 = UIBackgroundTaskIdentifier.invalid
}
}
Но мой backgroundTask приостанавливается через несколько секунд.Если я удаляю expirationHandler endBackgroundTask
, то он продолжает работать в фоновом режиме, но через некоторое время приложение завершается с Message from debugger: Terminated due to signal 9
. Я смотрел на подобные вопросы и узнал, что это может быть память или высокая загрузка ЦП.
Мой ЦП составляет около 95% каждый раз, а использование памяти составляет от 40 МБ до 80 МБ, когда приложение убивается.Это единственный процесс, который происходит в фоновом режиме.Я не уверен, что я могу сделать, чтобы продолжить анализ и вставку данных в фоновом режиме.Как можно уменьшить использование процессора или памяти или увеличить время работы в фоновом режиме.Пожалуйста, дайте мне знать, если понадобятся дальнейшие разъяснения.Любая помощь будет оценена.