downloadThumbnailManager.m 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. //
  2. // downloadThumbnailManager.m
  3. // 隐私保护
  4. //
  5. // Created by xd h on 2024/1/8.
  6. //
  7. #import "downloadThumbnailManager.h"
  8. @interface downloadThumbnailManager ()
  9. /**检测任务10s后 无反馈重新开始 */
  10. @property (nonatomic, assign) NSInteger taskRenewTime; //
  11. @end
  12. @implementation downloadThumbnailManager
  13. static downloadThumbnailManager * cur_downloadFileShareInstance = nil;
  14. +(downloadThumbnailManager *)shareInstance;
  15. {
  16. static dispatch_once_t onceToken;
  17. dispatch_once(&onceToken, ^{
  18. cur_downloadFileShareInstance = [[downloadThumbnailManager alloc] init];
  19. });
  20. return cur_downloadFileShareInstance;
  21. }
  22. - (id)init
  23. {
  24. self = [super init];
  25. if (self) {
  26. //[self initManager];
  27. }
  28. return self;
  29. }
  30. - (void)handlToDownloadThumbnailWith:(NSArray*)Arr
  31. {
  32. _isPreViewTask = YES;
  33. [self handDataArrFun:Arr];
  34. }
  35. - (void)handDataArrFun:(NSArray*)Arr{
  36. if(Arr && Arr.count >0){
  37. NSLock *lock = [NSLock new];
  38. [lock lock];
  39. if (!_waitDownloadTaskArr) {
  40. _waitDownloadTaskArr = [NSMutableArray arrayWithArray:Arr];
  41. }
  42. else{
  43. [_waitDownloadTaskArr addObjectsFromArray:Arr];
  44. }
  45. [self planToDownloadThumbnailFun];
  46. [lock unlock];
  47. }
  48. }
  49. - (void)handlToDownloadThumbnailInDownTableViewWith:(NSArray*)Arr{
  50. if(_isPreViewTask){
  51. if (_downloadingTaskArr.count == 0 ) {
  52. [self handDataArrFun:Arr];
  53. }
  54. else{
  55. //不处理
  56. }
  57. }
  58. else{
  59. [self handDataArrFun:Arr];
  60. }
  61. }
  62. - (void)planToDownloadThumbnailFun
  63. {
  64. if (!_downloadingTaskArr || _downloadingTaskArr.count == 0) {
  65. _downloadingTaskArr = [NSMutableArray arrayWithArray:_waitDownloadTaskArr];
  66. [_waitDownloadTaskArr removeAllObjects];
  67. }
  68. [self beginDownloadThumbnailFun];
  69. }
  70. - (void)beginDownloadThumbnailFun
  71. {
  72. if (_downloadingTaskArr.count > 0) {
  73. _curDownloadFileModel = _downloadingTaskArr.firstObject;
  74. }
  75. else{
  76. if(_waitDownloadTaskArr && _waitDownloadTaskArr.count>0){
  77. _downloadingTaskArr = [NSMutableArray arrayWithArray:_waitDownloadTaskArr];
  78. [_waitDownloadTaskArr removeAllObjects];
  79. [self beginDownloadThumbnailFun];
  80. }
  81. return;
  82. }
  83. //检测本地是否已经下载文件了
  84. NSString *fileName = [self.curDownloadFileModel getFileNameFun];
  85. NSString*pathStr = [cachesFileManager getFilePathWithName:fileName type:DownLoadThumbnail];
  86. NSFileManager *manager0 = [NSFileManager defaultManager];
  87. if([manager0 fileExistsAtPath:pathStr]) {
  88. //已经下载过了
  89. [_downloadingTaskArr removeObject:_curDownloadFileModel];
  90. _curDownloadFileModel = nil;
  91. [self beginDownloadThumbnailFun];
  92. return;
  93. }
  94. [[NSNotificationCenter defaultCenter] postNotificationName:downloadThumbnailBeginNotification object:_curDownloadFileModel];
  95. }
  96. - (void)DownloadFileDoneOneFileFun
  97. {
  98. [_downloadingTaskArr removeObject:_curDownloadFileModel];
  99. _curDownloadFileModel = nil;
  100. [self beginDownloadThumbnailFun];
  101. [[NSNotificationCenter defaultCenter] postNotificationName:downloadThumbnailDoneOneNotification object:nil];
  102. }
  103. - (void)checkReDownloadThumbnailFileFun
  104. {
  105. NSInteger curTime = [iTools getNowTimeStamp];
  106. if(self.taskRenewTime == 0){
  107. return;
  108. }
  109. if(curTime - self.taskRenewTime < 10){
  110. return;
  111. }
  112. if((_downloadingTaskArr && _downloadingTaskArr.count >0)
  113. ||(_waitDownloadTaskArr && _waitDownloadTaskArr.count>0)){
  114. [self beginDownloadThumbnailFun];
  115. }
  116. }
  117. @end