|
@@ -270,6 +270,7 @@ static RAUploadManager *sharedInstance;
|
|
|
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
|
|
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
|
|
|
{
|
|
{
|
|
|
|
|
|
|
|
|
|
+ [self saveTasks];
|
|
|
if([keyPath isEqualToString:@"operationCount"])
|
|
if([keyPath isEqualToString:@"operationCount"])
|
|
|
{
|
|
{
|
|
|
|
|
|
|
@@ -343,6 +344,7 @@ static RAUploadManager *sharedInstance;
|
|
|
// [[self mutableArrayValueForKey:@"arr_queue"] addObject:task];
|
|
// [[self mutableArrayValueForKey:@"arr_queue"] addObject:task];
|
|
|
|
|
|
|
|
[[self mutableArrayValueForKey:@"arr_queue"] insertObject:task atIndex:0];
|
|
[[self mutableArrayValueForKey:@"arr_queue"] insertObject:task atIndex:0];
|
|
|
|
|
+ [self saveTasks];
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if(self.newtaskStatus==TaskStatusWait)
|
|
if(self.newtaskStatus==TaskStatusWait)
|
|
@@ -460,6 +462,7 @@ static RAUploadManager *sharedInstance;
|
|
|
|
|
|
|
|
@synchronized(self) {
|
|
@synchronized(self) {
|
|
|
[[self mutableArrayValueForKey:@"arr_queue"] removeObject:task];
|
|
[[self mutableArrayValueForKey:@"arr_queue"] removeObject:task];
|
|
|
|
|
+ [self saveTasks];
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -482,9 +485,21 @@ static RAUploadManager *sharedInstance;
|
|
|
//}
|
|
//}
|
|
|
-(void) saveTasks
|
|
-(void) saveTasks
|
|
|
{
|
|
{
|
|
|
|
|
+ @synchronized(self) {
|
|
|
NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
|
|
NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
|
|
|
- [defaults setObject:self.arr_queue forKey:@"upload_queue"];
|
|
|
|
|
|
|
+
|
|
|
|
|
+ NSMutableArray* save_arr = [NSMutableArray new];
|
|
|
|
|
+ for(NSMutableDictionary* task in self.arr_queue)
|
|
|
|
|
+ {
|
|
|
|
|
+ NSMutableDictionary* savetask = [task mutableCopy];
|
|
|
|
|
+ savetask[@"operation"] = nil;
|
|
|
|
|
+ if([savetask[@"status"] intValue]==TaskStatusWait)
|
|
|
|
|
+ savetask[@"status"]=[NSNumber numberWithInteger:TaskStatusStop];
|
|
|
|
|
+ [save_arr addObject:savetask];
|
|
|
|
|
+ }
|
|
|
|
|
+ [defaults setObject:save_arr forKey:@"upload_queue"];
|
|
|
[defaults synchronize];
|
|
[defaults synchronize];
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
-(void) loadTasks
|
|
-(void) loadTasks
|
|
|
{
|
|
{
|
|
@@ -498,10 +513,12 @@ static RAUploadManager *sharedInstance;
|
|
|
{
|
|
{
|
|
|
NSMutableDictionary* newtask =[task mutableCopy];
|
|
NSMutableDictionary* newtask =[task mutableCopy];
|
|
|
[self.arr_queue addObject:newtask];
|
|
[self.arr_queue addObject:newtask];
|
|
|
|
|
+ if([newtask[@"status"] intValue]==TaskStatusWait)
|
|
|
|
|
+ newtask[@"status"] =[NSNumber numberWithInteger:TaskStatusStop];
|
|
|
if(self.autoStart&&[task[@"status"] intValue]!=TaskStatusError&&[task[@"status"] intValue]!=TaskStatusFinish)
|
|
if(self.autoStart&&[task[@"status"] intValue]!=TaskStatusError&&[task[@"status"] intValue]!=TaskStatusFinish)
|
|
|
[self startTask:newtask];
|
|
[self startTask:newtask];
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+// [self.operation_queue start];
|
|
|
// NSDictionary* ddd = arr[0] ;
|
|
// NSDictionary* ddd = arr[0] ;
|
|
|
// NSMutableDictionary* eee = [ddd mutableCopy];
|
|
// NSMutableDictionary* eee = [ddd mutableCopy];
|
|
|
//
|
|
//
|
|
@@ -549,6 +566,7 @@ static RAUploadManager *sharedInstance;
|
|
|
task[@"status"] = [NSNumber numberWithInt:TaskStatusStop] ;
|
|
task[@"status"] = [NSNumber numberWithInt:TaskStatusStop] ;
|
|
|
task[@"progress"] = [NSNumber numberWithDouble:0.0];
|
|
task[@"progress"] = [NSNumber numberWithDouble:0.0];
|
|
|
task[@"msg"]= @"";
|
|
task[@"msg"]= @"";
|
|
|
|
|
+ [self saveTasks];
|
|
|
if (operation.updateUI) { // 网络状态改变时,首先是正在进行的网络活动中断,然后才通知网络改变
|
|
if (operation.updateUI) { // 网络状态改变时,首先是正在进行的网络活动中断,然后才通知网络改变
|
|
|
operation.updateUI();
|
|
operation.updateUI();
|
|
|
}
|
|
}
|
|
@@ -575,9 +593,13 @@ static RAUploadManager *sharedInstance;
|
|
|
|
|
|
|
|
RAUploadOperation* operation = [[RAUploadOperation alloc] initWithTaskinfo:task retry:self.maxRetry];
|
|
RAUploadOperation* operation = [[RAUploadOperation alloc] initWithTaskinfo:task retry:self.maxRetry];
|
|
|
[operation setCompletionBlock:^{
|
|
[operation setCompletionBlock:^{
|
|
|
|
|
+ [self saveTasks];
|
|
|
|
|
+ NSLog(@"%@ %@",block_task[@"name"],block_task[@"status"]);
|
|
|
switch ([block_task[@"status"] intValue]) {
|
|
switch ([block_task[@"status"] intValue]) {
|
|
|
|
|
+
|
|
|
case TaskStatusFinish:
|
|
case TaskStatusFinish:
|
|
|
{
|
|
{
|
|
|
|
|
+
|
|
|
if(weakSelf.removeFinish)
|
|
if(weakSelf.removeFinish)
|
|
|
[self removeTask:block_task];
|
|
[self removeTask:block_task];
|
|
|
[[NSNotificationCenter defaultCenter] postNotificationName:UPLOAD_FINISH_NOTIFICATION object:nil userInfo:block_task];
|
|
[[NSNotificationCenter defaultCenter] postNotificationName:UPLOAD_FINISH_NOTIFICATION object:nil userInfo:block_task];
|
|
@@ -596,8 +618,10 @@ static RAUploadManager *sharedInstance;
|
|
|
}];
|
|
}];
|
|
|
|
|
|
|
|
task[@"msg"] = nil;
|
|
task[@"msg"] = nil;
|
|
|
- task[@"operation"] = operation;
|
|
|
|
|
|
|
+
|
|
|
task[@"status"] = [NSNumber numberWithInt:self.newtaskStatus] ;
|
|
task[@"status"] = [NSNumber numberWithInt:self.newtaskStatus] ;
|
|
|
|
|
+ [self saveTasks];
|
|
|
|
|
+ task[@"operation"] = operation;
|
|
|
[self.operation_queue addOperation:operation];
|
|
[self.operation_queue addOperation:operation];
|
|
|
|
|
|
|
|
dispatch_async(dispatch_get_main_queue(), ^{
|
|
dispatch_async(dispatch_get_main_queue(), ^{
|