React native 当应用程序从后台进入前台时,如何取消rn fetch blob任务

React native 当应用程序从后台进入前台时,如何取消rn fetch blob任务,react-native,react-native-android,React Native,React Native Android,这是我的密码 componentDidMount(): void { this.download(); } download =()=>{ this.downloader = RNFetchBlob.config({ fileCache: true, path: `${RNFS.DocumentDirectoryPath}/${fileName}`, }).fetch('GET', url,

这是我的密码

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);
        })
}

我正在使用上面的代码下载一个大文件列表(大约1GB到2GB),当应用程序状态为前台/活动状态时,一切正常,但有时当我关闭显示或在下载时使用另一个应用程序时,以及在某种程度上使用操作系统(android)时可能会杀死我的应用程序或将其置于睡眠模式,当我再次打开应用程序时,我可以看到应用程序是从头开始的,变量
this.downloader
设置为null,但我仍然可以看到在.process()方法中写入的日志,这意味着操作系统杀死了我的应用程序,但不知何故,rn fetch blob进程仍在下载,它将执行
this.download()method并创建一个新的rn fetch blob下载任务,这样同一文件将有一个重复的下载任务。因为应用程序在下载时是从零开始的,并且被操作系统终止或挂起,所以上一个下载任务的
this.downloader
为空,我不知道如何在创建新任务之前取消上一个任务。

您使用的是哪个版本的React Native?您可能可以使用AbortController--添加在0.60中谢谢您的回答。我已经研究过了,据我所知,AbortController可以用来取消获取请求,但我们需要定义它并将其分配给一个变量,该变量将在本期中重置为null。为了澄清,当应用程序再次激活时,在应用程序进入睡眠状态或被操作系统终止之前创建的所有变量都将设置为null。