1

iOS アプリでサーバーにファイルをアップロードする必要があります。アプリの実行中にこれが発生することを望みますが、同時に(別のスレッドで)実行されるため、アプリケーションのユーザーにはアップロードが見えません。

「バックグラウンド」で何かを実行するのは複雑に思えるので、質問が正しいことを確認したいと思います。私が知りたいのは:

1) アプリがフォアグラウンドにある間、データが利用可能になったときにデータをサーバーにアップロードするタイマーを含む「バックグラウンド スレッド」を使用できますか?

2) その場合、ユーザーが別のアプリケーションをフォアグラウンドに移動すると、アップロード タスクはどうなりますか?

3) もしそうなら、このタイプの並行性を実装するためのベストプラクティスは何ですか? 冷静になると、私が最初に検討するのはスレッドですが、これを達成するためのより良い、より簡単な方法があるかもしれません.

助けてくれてありがとう!

4

2 に答える 2

3

答えは、グランド セントラル ディスパッチまたはオペレーション キューです。詳細については、同時実行プログラミング ガイドを参照してください。

1) ディスパッチ キューまたはオペレーション キューを使用することで、タイマーやデータのポーリングを気にする必要がなくなります。システムはこれらすべての詳細を処理します。アップロードしたいデータを取得したら、簡単なアップロード タスクを作成し、そのタスクをキューに送信すると、キューがすべてのスケジューリングを処理します。

2) キューは一時停止されます。アプリが再開されると、キューも再開されます。タスクは、到達可能性の問題とネットワーク タイムアウトを処理できる必要があります。さらに、アプリはいつでも強制終了される可能性があることに留意する必要があります。バックグラウンドに移行する前に状態を保存します。

3) スレッドを使用しないでください。キューを使用してください。

于 2012-06-24T16:07:17.000 に答える
1

1) アプリがフォアグラウンドにある間、データが利用可能になったときにデータをサーバーにアップロードするタイマーを含む「バックグラウンド スレッド」を使用できますか?

はい、データが利用可能になったときに開始するバックグラウンド ワーカー スレッドを作成できます

2) その場合、ユーザーが別のアプリケーションをフォアグラウンドに移動すると、アップロード タスクはどうなりますか?

詳細については、こちらをお読みください。

3) もしそうなら、このタイプの並行性を実装するためのベストプラクティスは何ですか? 冷静になると、私が最初に検討するのはスレッドですが、これを達成するためのより良い、より簡単な方法があるかもしれません.

あなたが述べたように、最善の方法は、NSThreadとスレッドメカニズムを使用することです

于 2012-06-24T15:59:29.777 に答える