0

私はこのガイドを見てきました:

http://developer.android.com/training/basics/network-ops/connecting.html

そして、複数のファイルをダウンロードする最良の方法は何だろうと思っていました. 最初に、URL からテキスト ファイルをダウンロードして、ダウンロードするファイルを決定する必要があります。

ファイルをダウンロードするための ASyncTasks と、残りのファイルをダウンロードするための ASyncTasks を 2 つ用意する必要がありますか? そうしないと、非同期タスクが時間内に完了しないため、最初のファイルに依存するコードがクラッシュします。

また、進行状況ダイアログについては、ファイルごとに新しいものを作成するか、以前のものを更新しようとする必要がありますか?

ありがとう

最初は、ダウンロードするファイルごとに新しい AsyncTask を作成していました。

4

2 に答える 2

2

一般に、ファイルをデバイスに残しておき、1 つのファイルをダウンロードした結果に基づいて複数のファイルをダウンロードする場合は、次のようにする必要があります。

  1. IntentService を使用して、最初のファイルをダウンロードして保存/解析します。
  2. IntentService を使用して最初のダウンロードの結果を読み取り、残りのファイルをダウンロードします。必要に応じて、通知領域のプログレス バー通知を使用できます。その間、ユーザーはアプリで作業を続けることも、別のアプリに切り替えることもでき、ダウンロードは続行されます。

IntentService は、AsyncTask を強制終了する可能性のあるアクティビティ ライフサイクルの変更の影響を受けません。

データをダウンロードするときはいつでも、どこかに保存してください。データが古いかどうかをいつでも確認できます。一方、接続がない場合、ユーザーは最後の「正常な」データを持っています。

IntentService の詳細については、バックグラウンド サービスでの実行を参照してください。サンプル アプリのコンテンツ プロバイダーは、他のファイルの「メタデータ」をダウンロードする方法を示しています。このサンプルは、ダウンロード前に接続を確認する方法も示しています。

于 2012-12-21T18:46:03.610 に答える
1

可能なすべての状況をカバーする完璧な答えはありません。

  • AsyncTask をすばやく実行するだけで満足する場合は、何も変更しないでください。
  • API 9 以降を使用している場合は、DownloadManagerクラスに切り替えて詳細を確認できます。

参照が必要な場合は、 Android でファイルをダウンロードし、 ProgressDialogで進行状況を表示すると、アクティブな ProgressBar を使用してファイルをダウンロードする複数の方法の例が示されます。

于 2012-12-21T17:17:48.610 に答える