aSynctask、スレッド、および画像のダウンロードの使用を理解するのにいくつか問題があります。イメージをダウンロードするが、スレッド、asynctask などを実装しないクラスを作成しました。
現時点では、手順 1 と 2 を実行するために asynctask を 1 つだけ使用しています。私のタブレットでは、これに約 10 秒かかります。
私は、アプリケーションがどのように機能/進行するか 3 つのステップを考えました。
URL から最も重要な情報を JSON 形式でダウンロードし、sqlite データベースに保存します。これは、他の手順を進めるために必要な最も関連性の高い情報です。これには現時点で最大で約 2 秒かかり、これをデータベースに保存しています。
データベースにクエリを実行して、以前の JSON データからさらに多くの URL を取得し、同じサイト (30 の異なる URL) からさらに多くの情報をダウンロードして、JSON をデータベースに保存します。これには、単一の asynctask 内で現時点で約 5 秒かかります。可能であれば、これを 3 つ (?) のスレッドに分割することを考えていました。
データベースに再度クエリを実行して、手順 2 で提供された情報を取得し、さまざまな URL から約 200 枚の画像をダウンロードし、サイズが ~150px の画像をデバイス ストレージに保存します。ダウンロードを行う前に、前の手順をすべて実行する必要があります。これも複数のスレッドに分割する必要があるため、できるだけ多くの画像をできるだけ速くダウンロードできます。
このタスクと個別のスレッドに asynctask を使用する最もスマートな方法は何だろうと思っていました。いくつのスレッドを使用する必要があると思いますか (もちろん、後で最適化するときにこれを把握します)。最初に asynctask を使用してステップ 1 をダウンロードし、実行後に他のスレッドを開始する必要がありますか? ネストされた非同期クラスを持つこのクラス内に他のスレッドを作成する必要があります。
少なくともこれをすべて読んでくれて、そしておそらくあなたの助けをありがとう。
編集:ああ、サービスを使用してasynctaskを開始しています。