6

大きなファイルのダウンロードが進行中で、アプリがバックグラウンドに移動した場合、ダウンロード実行機能を維持する方法はありますか?

アプリがバックグラウンドに移行したときに が呼び出され、そこでタスクを開始できることはわかっbeginBackgroundTaskWithExpirationHandler:ていますが、新しいタスクを開始するのではなく、古いタスクを完了したいと考えています。で解決できますがbeginBackgroundTaskWithExpirationHandler:、そのためにはダウンロードを一時停止し、適切な場所から再開する必要があります。これはばかげています。

理想的には、ダウンロード関数を有効期限ハンドラーでラップして、アプリがバックグラウンドに移動した後もダウンロード関数が許可された時間だけ実行し続けるようにすることです。

4

2 に答える 2

-3

フォアグラウンドにいるときにバックグラウンド スレッドを開始してもまったく問題ありません。カスタム有効期限ハンドラーを追加します。非同期リクエストを実行します。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 
                                         (unsigned long)NULL), ^(void) {
    [self performYourStuffInTheBackGround];
});

AppleDEV からの引用;

おそらく、非同期ネットワーク API を使用したいと思うでしょう。iOS では、GCD などの低レベル API から NSURLConnection などの高レベル API まで、さまざまな API が提供されており、その間に多くのストップがあり、それらを使用することをお勧めします。

于 2012-09-04T11:04:57.523 に答える