1

ASIHTTP リクエストを使用してダウンロード キューを実行しています。ユーザーがホーム画面を押してアプリがバックグラウンドになったときに、この操作を続行したいと思います。ASIHTTP リクエストがバックグラウンドで実行できることはわかっていますが、ASIHTTP リクエストを実行するプロセスもバックグラウンドで実行する必要があります。

どうすればいいのですか?

StackOverflow でこの投稿を見ました: iOS4 の下でバックグラウンドで長時間実行されるプロセスを継続する

しかし、解決策は iOS4 にあります。iOS5以上でやりたいのですが..

与えられた解決策:

UIApplication *app = [UIApplication sharedApplication];
if ([app respondsToSelector:@selector(beginBackgroundTaskWithExpirationHandler:)]) {
    backgroundTaskIdentifier = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
        dispatch_async(dispatch_get_main_queue(), ^{
            if (backgroundTaskIdentifier != UIBackgroundTaskInvalid)
            {
                // you took too long - clean up what you can, then …
                [app endBackgroundTask:backgroundTaskIdentifier];
                backgroundTaskIdentifier = UIBackgroundTaskInvalid;
            }
        });
    }];
}

別の質問は、このコードをどこに置くべきかということです。

これに関するいくつかのガイダンスが必要です..

4

1 に答える 1

0

他の回答で見つけた解決策は、iOS 4.0 以降に適しています。これは問題なく動作し、バックグラウンドに移行するときに拡張タスクを実行するための推奨される方法のままです.

また、iOS 3.x をサポートしようとしている場合を除き (iOS 3.x はもはや推奨されません)、このrespondsToSelectorチェックは必要ありません。

于 2013-03-26T05:56:29.930 に答える