2012-03-23 11 views

答えて

1

applicationDidEnterBackgroundにBackgroundTaskWithExpirationHandlerを定義します。このような

// ... 
UIBackgroundTaskIdentifier bti; 
// ... 

- (void)applicationDidEnterBackground:(UIApplication *)application { 
    bti = [application beginBackgroundTaskWithExpirationHandler:^{ 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      if(bti != UIBackgroundTaskInvalid) { 
       [application endBackgroundTask:bti]; 
       bti = UIBackgroundTaskInvalid; 
      } 
     }); 
    }]; 

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 

     // DO or CONTINUE RESUMED DOWNLOAD HERE 

     dispatch_async(dispatch_get_main_queue(), ^{ 
      if(bti != UIBackgroundTaskInvalid) { 
       [application endBackgroundTask:bti]; 
       bti = UIBackgroundTaskInvalid; 
      } 
     }); 
    }); 
} 

をそれは私があなたのために作られたダウンロードsample projectをどのように機能するかを確認するには。

gitのクローンgitの ://github.com/jacekmigacz/BTWEH.git

...とapplicationDidEnterBackgroundトリガするホームボタンを押してください:を。

ダウンロードタスクを別の権限のあるスレッドに委任し、OSに中断させる代わりにアプリケーションをバックグラウンドの状態に保つことをお勧めします。

+0

ありがとう、あなたロック;) –

+0

bro [application beginBackgroundTaskWithExpirationHandler:,,,,,私はここに私のアプリケーションの名前にAPPLICATIONを変更する必要があります –

関連する問題