// // downloadThumbnailManager.m // 隐私保护 // // Created by xd h on 2024/1/8. // #import "downloadThumbnailManager.h" @interface downloadThumbnailManager () /**检测任务10s后 无反馈重新开始 */ @property (nonatomic, assign) NSInteger taskRenewTime; // @end @implementation downloadThumbnailManager static downloadThumbnailManager * cur_downloadFileShareInstance = nil; +(downloadThumbnailManager *)shareInstance; { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ cur_downloadFileShareInstance = [[downloadThumbnailManager alloc] init]; }); return cur_downloadFileShareInstance; } - (id)init { self = [super init]; if (self) { //[self initManager]; } return self; } - (void)handlToDownloadThumbnailWith:(NSArray*)Arr { _isPreViewTask = YES; [self handDataArrFun:Arr]; } - (void)handDataArrFun:(NSArray*)Arr{ if(Arr && Arr.count >0){ NSLock *lock = [NSLock new]; [lock lock]; if (!_waitDownloadTaskArr) { _waitDownloadTaskArr = [NSMutableArray arrayWithArray:Arr]; } else{ [_waitDownloadTaskArr addObjectsFromArray:Arr]; } [self planToDownloadThumbnailFun]; [lock unlock]; } } - (void)handlToDownloadThumbnailInDownTableViewWith:(NSArray*)Arr{ if(_isPreViewTask){ if (_downloadingTaskArr.count == 0 ) { [self handDataArrFun:Arr]; } else{ //不处理 } } else{ [self handDataArrFun:Arr]; } } - (void)planToDownloadThumbnailFun { if (!_downloadingTaskArr || _downloadingTaskArr.count == 0) { _downloadingTaskArr = [NSMutableArray arrayWithArray:_waitDownloadTaskArr]; [_waitDownloadTaskArr removeAllObjects]; } [self beginDownloadThumbnailFun]; } - (void)beginDownloadThumbnailFun { if (_downloadingTaskArr.count > 0) { _curDownloadFileModel = _downloadingTaskArr.firstObject; } else{ if(_waitDownloadTaskArr && _waitDownloadTaskArr.count>0){ _downloadingTaskArr = [NSMutableArray arrayWithArray:_waitDownloadTaskArr]; [_waitDownloadTaskArr removeAllObjects]; [self beginDownloadThumbnailFun]; } return; } //检测本地是否已经下载文件了 NSString *fileName = [self.curDownloadFileModel getFileNameFun]; NSString*pathStr = [cachesFileManager getFilePathWithName:fileName type:DownLoadThumbnail]; NSFileManager *manager0 = [NSFileManager defaultManager]; if([manager0 fileExistsAtPath:pathStr]) { //已经下载过了 [_downloadingTaskArr removeObject:_curDownloadFileModel]; _curDownloadFileModel = nil; [self beginDownloadThumbnailFun]; return; } self.taskRenewTime = [iTools getNowTimeStamp]; [[NSNotificationCenter defaultCenter] postNotificationName:downloadThumbnailBeginNotification object:_curDownloadFileModel]; } - (void)DownloadFileDoneOneFileFun { [_downloadingTaskArr removeObject:_curDownloadFileModel]; _curDownloadFileModel = nil; [self beginDownloadThumbnailFun]; self.taskRenewTime = [iTools getNowTimeStamp]; [[NSNotificationCenter defaultCenter] postNotificationName:downloadThumbnailDoneOneNotification object:nil]; } - (void)checkReDownloadThumbnailFileFun { NSInteger curTime = [iTools getNowTimeStamp]; if(self.taskRenewTime == 0){ return; } if(curTime - self.taskRenewTime < 10){ return; } if((_downloadingTaskArr && _downloadingTaskArr.count >0) ||(_waitDownloadTaskArr && _waitDownloadTaskArr.count>0)){ [self beginDownloadThumbnailFun]; } } @end