0

大量の画像をローカルにダウンロードする必要があるアプリに取り組んでいます (オフラインで利用できるようにするため)。画像の数は 100 ~ 10,000 です。各画像は 100K ~ 250K の範囲で異なる場合があります

NSOperationQueue を介してこれを行うことができます。これを機能させるコードは既にありますが、この質問は概念的なものです。ここで取るべき最善のアプローチが何であるかはわかりません。

1) ユーザーが初めてログインするとすぐにすべての画像をダウンロードしますか? 画像の数に基づいて、これには長い時間がかかる可能性があり、ユーザーがその間にアプリを閉じた場合はどうなりますか. この場合、バックグラウンド プロセスで費やせる時間に制限があることを理解していますか? 正直なところ、私はバックグラウンドで何もしたくありません(つまり、アプリが閉じられているとき)

2) ユーザーが特定のカテゴリを選択したときに画像をダウンロードしますか? カテゴリに 800 枚の画像がある場合、800 枚の画像すべてのダウンロードが完了する前にユーザーが別のカテゴリを選択するとどうなりますか? いつでもスレッド形式のダウンロードを開始できますが、ユーザーが別のカテゴリを選択した場合、スレッドは引き続き実行されますか?

3)「設定」に何かを入れて、ユーザーが自分で決定できるようにします。「Total Images: 8000」 Images Available : 2000 のようなものと、何が起こっているかの UIProgressView を表示する「Download All」と言うボタン....したがって、ユーザーはおそらくすべてが完了するまで待ちます。

それとも他のアプローチですか?

考え?

4

2 に答える 2

0

コメントを含むあなたの説明から私が理解する限り、最善のアプローチは、スレッドですべての画像をダウンロードし、ダウンロードプロセスを再開可能にすることだと思います。このようにして、オフラインで使用するために画像のリモートデータベースをミラーリングします。

これに伴うものは次のとおりです。

  1. ダウンロードした画像を追跡します。

  2. アプリが起動/再開するたびに、ダウンロードスレッドを終了した場所から正確に開始します。

  3. また、まだダウンロードされていない画像にアクセスしようとしたときにユーザーに適切に通知されるメカニズムを提供する必要がありますが、これは問題ないと思います(どこかに進行状況インジケーターを提供することもできます)。

于 2012-06-20T16:07:50.633 に答える
0

ユーザーが実際に画像で何かをする必要がある場合にのみ、画像をダウンロードします。すべての画像を事前にダウンロードすると、ユーザーはあなたを嫌うでしょう。:)

于 2012-06-20T15:57:12.943 に答える