アプリで大きなファイル (ほぼ 2 GB) をダウンロードする必要があります。最初にAndroid Asynchronous Http Libraryを調べましたが、進行状況を公開する方法やダウンロードを開始、一時停止する方法を示す例が見つかりませんでした。次に、このライブラリを使用するか、標準の http commons を使用するかがわかりません。その他の問題は、サービスを使用してファイルをダウンロードする必要があるかどうかです。
どうすればよいか、ヒントをいただけますか?
アプリで大きなファイル (ほぼ 2 GB) をダウンロードする必要があります。最初にAndroid Asynchronous Http Libraryを調べましたが、進行状況を公開する方法やダウンロードを開始、一時停止する方法を示す例が見つかりませんでした。次に、このライブラリを使用するか、標準の http commons を使用するかがわかりません。その他の問題は、サービスを使用してファイルをダウンロードする必要があるかどうかです。
どうすればよいか、ヒントをいただけますか?
私はあなたがたくさんの答えを持っているのを見てきましたが、全体的な観点から実際に答えている人はいません.
2k または 2gb ファイルをダウンロードする場合、実際のコードは同じで、ある種の接続ハンドラとある種の入力ストリームおよび出力ストリームを使用し、通常は入力ストリームをバッファリングされた入力ストリームでラップします。そのために、Web のいたるところで無数の Java の例を見つけることができます。
Android プラットフォームを考慮した場合の秘訣は、これは時間のかかる操作であるため、アクティビティのライフサイクル内で行うべきではないということです。
あなたには2つの選択肢があると言いました:
あなたがサービスを作成できると提案し たように、このケースにぴったりだと思われるので、 IntentServiceを使用することをお勧めします。IntentService は、URL を文字列として渡し、ストリームなどを使用してサービスをダウンロードさせるインテントを通じて、自動的に新しいスレッドにまたがります。
おそらくうまく機能する別の方法ですが、私が個人的に使用したことはありませんが、Gingerbread 以降に利用可能になったDownloadManagerを使用することです。getSystemService(Context.DOWNLOAD_SERVICE)
電話して電話するのは難しくないはずですdwManag.enqueue(dwRequest);
それが役に立てば幸い。
ジンジャーブレッド以前のデバイスを対象としていない場合はDownloadManager
、リンク先の回答の 3 番目のオプションとして提案されているとおりに使用します。ファイルのダウンロードを処理し、進行状況を通知バーに表示するので、ユーザーはアプリがバックグラウンドに入った後でも何が起こっているかを確認でき、ユーザーが行ったときに何が起こるかについてあまり心配する必要はありません。別のアプリに移動すると、Android はアプリを強制終了してメモリを解放することを決定します。また、少なくとも一部の Android ビルドにある「wifi 経由でのみファイルをダウンロードする」などの機能で動作します。
adm ダウンロード マネージャーを使用することをお勧めします。ネットワークがなくてもダウンロードに失敗することはなく、速度も最高です。