Как отменить задачу rn-fetch-blob, когда приложение входит из фона на передний план - PullRequest
0 голосов
/ 14 октября 2019

Вот мой код

componentDidMount(): void {
        this.download();
}

download =()=>{
        this.downloader = RNFetchBlob.config({
            fileCache: true,
            path: `${RNFS.DocumentDirectoryPath}/${fileName}`,
        }).fetch('GET', url, {
            //some headers ..
        }).progress((received, total) => {
        console.log('Progress', received / total);
        }).then(async (res) => {

            console.log(res.path())

        }).catch(async (errorMessage, statusCode) => {
            console.log(errorMessage);
            console.log(statusCode);
        })
}

Я использую приведенный выше код для загрузки списка больших файлов (от 1 ГБ до 2 ГБ), и все отлично работает, когда состояние приложения находится на переднем плане / активном, но иногдакогда я выключаю дисплей или просто использую другое приложение во время загрузки, и каким-то образом ОС (android) может убить мое приложение или перевести его в режим сна, а когда я снова открываю приложение, я вижу, что приложение запускается с нуля и переменная this.downloader установлен в ноль, НО я все еще могу видеть записи логов в методе .process (), это означает, что ОС убила мое приложение, но каким-то образом процесс rn-fetch-blob все еще загружается, и он снова выполнит метод this.download();и создайте новую задачу загрузки rn-fetch-blob, чтобы в этом же файле была дублированная задача загрузки. Потому что приложение запускается с нуля, когда оно было загружено и убито или приостановлено операционной системой, поэтому this.downloader предыдущей задачи загрузки равно нулю, и я не знаю, как отменить предыдущую задачу перед созданием новой.

...