Вот мой код
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
предыдущей задачи загрузки равно нулю, и я не знаю, как отменить предыдущую задачу перед созданием новой.