downloadThumbnailManager.m 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  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 (!_downloadingTaskArr) {
  40. _downloadingTaskArr = [NSMutableArray arrayWithArray:Arr];
  41. }
  42. else{
  43. for (couldPhoneFileModel*model in Arr) {
  44. if(_downloadingTaskArr.count < 5){
  45. [_downloadingTaskArr addObject:model];
  46. }
  47. else{
  48. [_downloadingTaskArr insertObject:model atIndex:3];
  49. }
  50. }
  51. }
  52. [self planToDownloadThumbnailFun];
  53. [lock unlock];
  54. }
  55. }
  56. - (void)handlToDownloadThumbnailInDownTableViewWith:(NSArray*)Arr{
  57. if(_isPreViewTask){
  58. if (_downloadingTaskArr.count == 0 ) {
  59. [self handDataArrFun:Arr];
  60. }
  61. else{
  62. //不处理
  63. }
  64. }
  65. else{
  66. [self handDataArrFun:Arr];
  67. }
  68. }
  69. - (void)planToDownloadThumbnailFun
  70. {
  71. if (!_downloadingTaskArr || _downloadingTaskArr.count == 0) {
  72. return;
  73. }
  74. [self beginDownloadThumbnailFun];
  75. }
  76. //- (void)handlToDownloadOneThumbnailWith:(couldPhoneFileModel*)model
  77. //{
  78. // [self beginDownloadThumbnailFun:model];
  79. //}
  80. //- (void)beginDownloadThumbnailFun:(couldPhoneFileModel*)model
  81. //{
  82. // self.curDownloadFileModel = model;
  83. - (void)beginDownloadThumbnailFun{
  84. if (_downloadingTaskArr.count > 0) {
  85. couldPhoneFileModel*firstModel = _downloadingTaskArr.firstObject;
  86. if(firstModel == _curDownloadFileModel){
  87. return;
  88. }
  89. else{
  90. _curDownloadFileModel = _downloadingTaskArr.firstObject;
  91. }
  92. }
  93. else{
  94. return;
  95. }
  96. //检测本地是否已经下载文件了
  97. NSString *fileName = [self.curDownloadFileModel getFileNameFun];
  98. NSString*pathStr = [cachesFileManager getFilePathWithName:fileName type:DownLoadThumbnail];
  99. NSFileManager *manager0 = [NSFileManager defaultManager];
  100. if([manager0 fileExistsAtPath:pathStr]) {
  101. //已经下载过了
  102. [_downloadingTaskArr removeObject:_curDownloadFileModel];
  103. _curDownloadFileModel = nil;
  104. [self beginDownloadThumbnailFun];
  105. return;
  106. }
  107. self.taskRenewTime = [iTools getNowTimeStamp];
  108. //[[webSocketManager shareInstance] begindownloadThumbnailImageFunBy:_curDownloadFileModel];
  109. }
  110. - (void)DownloadFileDoneOneFileFun
  111. {
  112. [[NSNotificationCenter defaultCenter] postNotificationName:downloadThumbnailDoneOneNotification object:nil];
  113. [_downloadingTaskArr removeObject:_curDownloadFileModel];
  114. _curDownloadFileModel = nil;
  115. [self beginDownloadThumbnailFun];
  116. self.taskRenewTime = [iTools getNowTimeStamp];
  117. }
  118. - (void)checkReDownloadThumbnailFileFun
  119. {
  120. NSInteger curTime = [iTools getNowTimeStamp];
  121. if(self.taskRenewTime == 0){
  122. return;
  123. }
  124. if(curTime - self.taskRenewTime < 10){
  125. return;
  126. }
  127. if(_downloadingTaskArr && _downloadingTaskArr.count >0){
  128. [_downloadingTaskArr removeObject:_curDownloadFileModel];
  129. [self beginDownloadThumbnailFun];
  130. }
  131. }
  132. @end