2

ファイルを順番にダウンロードする必要があります。現在、アプリがフォアグラウンドにある間にそれを行うことができます。

以下は、私が使用したロジックです。

  1. ダウンロードするすべてのタスクを作成します。

  2. 一度に 1 つずつ再開し、現在の終了時に から次の 1 つを再開しURLSession:task:didCompleteWithError:ます。

このロジックは、アプリがフォアグラウンドにある間は機能しますが、アプリがバックグラウンドで実行を開始すると (クラッシュによって)、ダウンロードが完了する前にアプリを再度実行すると、すべてのタスクの状態が再開に変更され、すべてが同時にダウンロードされます。

これは予想される動作ですか、それともバックグラウンド モードでもシリアルでこれを注文するのに欠けているものですか?

編集: ダウンロードタスクを1つずつ作成して確認しました。最初のタスクが終了したら、次の内部setTaskDidCompleteBlockを作成します。最初のタスクのみを完了し、その後、タスクが内部で作成されている間にセッションがクラッシュしましたsetTaskDidCompleteBlock(これは、フォアグラウンドで正常に動作するため、バックグラウンド モードで実行している場合にのみ発生します)。

これが私のクラッシュログのスクリーンショットです:

drive.google.com/file/d/0B9jFCUPsPtV6YW5zbTJrQ0pQYlk/view?usp=sharing

drive.google.com/file/d/0B9jFCUPsPtV6UkEwOURpZmZYcEU/view?usp=sharing

どんな助けでも大歓迎です。

4

2 に答える 2