Фоновая задача убивает приложение с помощью - Сообщение от отладчика: прекращено из-за сигнала 9 - PullRequest
0 голосов
/ 11 октября 2018

Я загружаю текстовый файл из 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 МБ, когда приложение убивается.Это единственный процесс, который происходит в фоновом режиме.Я не уверен, что я могу сделать, чтобы продолжить анализ и вставку данных в фоновом режиме.Как можно уменьшить использование процессора или памяти или увеличить время работы в фоновом режиме.Пожалуйста, дайте мне знать, если понадобятся дальнейшие разъяснения.Любая помощь будет оценена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...