2013-07-31 1 views
2

비누 기반 웹 서비스를 사용하여 이미지 업로드를 실행하려고하며 내 앱에서 2 가지 주요 문제에 직면하고 있습니다.비누 기반 웹 서비스를 사용하여 서버에 여러 이미지 업로드

문제 1 : - 서버에 내 응용 프로그램이 그 당시보다 배경 상태로 간다면 그 시간에 여러 개의 이미지를 업로드 응용 프로그램 내 (application suspended state) 실행 중지됩니다. 내 앱이 백그라운드에서 전경 상태로 돌아갈 때 내 배경 스레드를 다시 시작합니다.

2 호 : - 장치 갤러리에서 서버에 160-170 개의 이미지를 업로드하려고합니다. 서버에 60-70 개의 이미지를 업로드 한 후 메모리 경고를 받았습니다. 그 방법을 처리하고 응용 프로그램 내에서 일부 메모리를 비우려고하고 그 시간에 내 스레드가 다시 시작되면 응용 프로그램이 다운됩니다. // - >> - 2 호 문제에 대해 3 개의 다른 웹 서비스와 너무 긴 코드를 추가하여 여기에서 공유하지 않을 것입니다. 내가 악기를 점검 할 때 일반적으로 최대 2에서 2.5 MB의 라이브 바이트로 실행되지만 스레드를 업로드하면 점차 증가하고 일부 선택 지점에서 수신 된 메모리 경고가 수신됩니다. 내 코드는 ARC의 기능을 포함하지만 여전히 메모리 경고 문제가 있습니다. 문제 1

코드 : -

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 

      UIDevice* device = [UIDevice currentDevice]; 
      BOOL backgroundSupported = NO; 
      if ([device respondsToSelector:@selector(isMultitaskingSupported)]) 
       { 
       backgroundSupported = device.multitaskingSupported; 
      } 
     //NSLog(@"backgroundSupported: %d", backgroundSupported); 
     if (backgroundSupported) 
     { 

     _IsBackground = TRUE; 

     UIApplication* app = [UIApplication sharedApplication]; 

     bgTask = [app beginBackgroundTaskWithExpirationHandler: 
       ^{ 
      [app endBackgroundTask:bgTask]; 
      bgTask = UIBackgroundTaskInvalid; 
     }]; 


     // Start the long-running task and return immediately. 
     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), 
       ^{ 
       while (_IsBackground) 
        { 

         //// it contineous run my application within this state. 

        } 
        NSLog(@"Background loop ended"); 

      [app endBackgroundTask:bgTask]; 
      bgTask = UIBackgroundTaskInvalid; 

      }); 
      } 
      } 

답변

0

1)

애플이 아이폰과 아이 패드에 배터리 수명에 대해 매우 관심이, 그래서 그들은 백그라운드에서 실행 할 수 있는지에 대해 매우 엄격하다 (말하자면 너무 많지는 않다).

현재 배송 버전의 iOS에서는 응용 프로그램이 "applicationDidEnterBackground:"대리자 방법으로 전화를받을 때 약 5 초 동안 정리하거나 올바르게 일시 중지 할 수 있습니다.

앱이 전경에있는 동안 백그라운드 스레드 을 통해 이미지를 업로드 할 수있는 방법을 찾아야합니다.. 즉, 이미지를 업로드 할 수있는 유일한 시간은 앱이 사용자에게 표시되는 동안입니다.

More information can be found in this closely related question.

2) 두 번째 문제를 들어

, 그것은 제대로,) 여러 개의 이미지를 업로드하는 과정에서 사용되는 몇 가지 변수를 해제 (또는 설정하는 "nil"또는 재설정되지 않습니다 꽤 분명있는 메모리 사용량이 증가하고 증가하고 궁극적으로 앱을 죽이는 이유입니다.

당신은 이미 Instruments에 대해 알고 있지만, tracking down memory usage에 대해 더 익숙해 져야하고 메모리에있는 공간이 점점 더 많은 공간을 차지하고있는 것처럼 들립니다.

+0

도움 주셔서 감사합니다. – Anjan

관련 문제