2011-09-27 22 views
10

私はユーザーがファイルのリストをブラウズしてダウンロードできるようにAndroid用アプリケーションを作成しています。 ダウンロードごとにスレッドを作成し、HttpURLConnectionインスタンスでファイルをダウンロードします(whileループで接続から読み取る)。Androidアプリケーションで複数のファイルを同時にダウンロードする

この方法は、1回のアクティブダウンロードで正常に動作します。しかし、ユーザーが複数を起動すると、ダウンロードパフォーマンスが大幅に低下します。ほとんどの場合、これらの並列ダウンロードはすべての帯域幅を消費し、ユーザーはファイルをブラウズできません(ファイルリストをロードするために別のHttpUrlConnectionを使用します)。

ダウンロードシステムの改良に関するご意見はありますか?おかげさまで

P .: Google ChromeやFirefoxなどの一般的なブラウザがうまくいく方法。誰でも彼らの働きを知っていますか?

+0

あなたは、ダウンロードスレッドに低い優先順位を与えることを試みることができます。 – vee

+0

どうすれば可能ですか? – Sadjad

+0

文書: http://developer.android.com/reference/java/lang/Thread.html#setPriority(int) 例: http://stackoverflow.com/questions/5198518/whats-the-difference -with-thread-setpriority-and -roid-os-process-setthrea – vee

答えて

7

ああ、私は特定の接続を絞る方法を知らない。しかしながら、実用的なアプローチは、同時ダウンロードの数を制御するためにダウンロードの待ち行列を実装することであろう。あなたの場合、一度に1つのものだけをダウンロードさせたいと思うでしょう。これは、いくつかの異なる方法で実装できます。

ここハンドラとルーパーでそれを行う方法があります:http://mindtherobot.com/blog/159/android-guts-intro-to-loopers-and-handlers/

編集1: マウスのコメントを参照してください。一度に最大2つのスレッドをダウンロードするほうが賢明かもしれません。

+7

一度に1つのストリームだけをダウンロードすることはお勧めしません。 1つのストリームにアクセスできない、ダウンロードが遅くなったり、その他の問題が発生した場合に問題が発生する可能性があります。その後、すべてのダウンロードが完了するまで待つ必要があります。 –

+1

@mice良い点。 – Ian

関連する問題