2

基本的に、オフライン コンテンツを視聴するための小さなアプリを作ろうとしています。そのため、ユーザーがコンテンツのダウンロードを選択する瞬間があります (そして、アプリは約 300 の小さなファイルと画像をダウンロードする必要があります)。

ユーザーが適切なアクティビティに入った場合にプロセスがどのように進むかをユーザーに示したいと思います。すべてのファイルのリストを表示し、既にダウンロードされているもの、進行中またはダウンロード待ちのものを示します。

私の問題は、これを達成するためにどのようなアプローチを取るべきか本当にわからないことです。ダウンロードは完了するまで続くはずなので、解決策はService. ダウンロードごとに startService() を呼び出す IntentService、Bound Service、または Standard Service ですか? また、後で表示するためにオブジェクトを最新の状態に保つにはどうすればよいですか? データベースまたはメモリ内のオブジェクトを使用する必要がありますか?

ありがとう

4

2 に答える 2

3

クラスを使用することをお勧めしAsyncTaskます。これにより、時間のかかるコード(ファイルのダウンロードなど)を別のスレッドに簡単に移動できます。これにより、アプリの応答性を維持しながら、その過程で UI を更新することができます。

アプリをどのように動作させたいかについての詳細がなければ、より具体的にすることは困難です。ダウンロードは、アプリの実行中またはバックグラウンドでのみ行われますか?

于 2012-09-10T21:36:37.113 に答える
2

Asynctask を使用するか、ExecutorService をカスタム ポリシーで実装して、ダウンロード スレッドを送信することができます。
ダウンロードを停止する機会をユーザーに与えたい場合は、AsyncTask または Future オブジェクトへの参照をそれぞれコレクション内に保持する必要があります。もちろん、新しいファイルをダウンロードするたびに startService を呼び出す必要があります。サービス onCreate は、サービスが実行されていない場合にのみ呼び出され、startService を呼び出すたびに onStartCommand が実行されます。onStartCommand では、新しいファイルをダウンロードするために新しいスレッドを実行します。サービスをアクティビティにバインドし、downloadsActivity が作成されるたびに、カスタム アダプターを実装するダウンロードの状態を表示できます。activity.stopService または service.stopSelf を呼び出したときにのみサービスが終了します

于 2012-09-11T00:45:17.067 に答える