バックグラウンドで継続する操作を実行する 1 つの方法は、ダウンロードを実行する別のスレッドを作成することです。スレッド内で、beginBackgroundTaskWithExpirationHandler: と endBackgroundTask の呼び出しの間にダウンロード操作をまとめます。バックグラウンドで実行されているかどうかを確認する必要はありません。常にこれら 2 つのメソッドを呼び出すだけです。
// Tell iOS this as a background task in case we get backgrounded
UIBackgroundTaskIdentifier taskId = [[UIApplication sharedApplication]
beginBackgroundTaskWithExpirationHandler:NULL];
//----------------------------------------------
// Perform your download operations here
//----------------------------------------------
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
// Tell iOS that we are done with stuff that needed to keep going even if backgrounded
[[UIApplication sharedApplication] endBackgroundTask:taskId];