0

データベースから約 10 個のビットマップをロードしていますが、将来的にはさらに数個になる可能性があります。

これには合計で約 3 秒かかりますが、ユーザーは読み込みが完了するまで待つ必要があるため、これを改善したいと考えています。(読み込みは で行われますAsyncTask)

これが私のコードです:

 Bitmap bitmap = BitmapFactory.decodeStream(url.openConnection().getInputStream());

これは、この画像を含む DB から JSONArray をロードするループ内にあります (url は画像への有効な直接リンクです)。

すべてをロードするのにかかるミリ秒を記録しました。1 回の反復で約 350 ミリ秒ですが、約 300 ミリ秒は単なる変換です。

これを改善する方法はありますか?毎回新しい Bitmap-Object を作成したくないですか?

4

2 に答える 2

0

あなたの問題は、すべての接続がそれ自体で処理されることです。これは、すべてのイメージが新しい TCP 接続を作成し、データを取得してから再び接続を閉じることを意味します。

スレッドを使用して、一度に複数の画像を読み込むことができます。接続の作成中にほとんどの時間が失われ、毎回待機する要求をシリアル化します。スレッドを使用すると、接続の作成が並列化されるため、イメージのロードにかかる時間を短縮できます。

もう 1 つのオプションは、専用の HTTP クライアント ライブラリを使用することです。これにより、TCP 接続を一度だけ開き、この単一の接続を介して複数の要求を送信するため、接続をより適切に処理できます。この場合、TCP 接続のオーバーヘッドは 1 回だけです。

于 2013-07-25T08:07:04.407 に答える