2016-12-30 5 views
0

私のアンドロイドアプリには、ウェブからバックグラウンドで一連のイメージURLを取得してUIスレッドに渡すListViewがあります。その後、UIスレッドは画像をダウンロードして表示します(キャッシングとサイズ変更を保証するためにはPicassoを使用しています)。イメージをバックグラウンドスレッドまたはUIスレッドにロードしますか?

バックグラウンドスレッドで画像をダウンロードしてから、表示のためにUIスレッドにサイズ変更されたビットマップ。また、両方のシナリオでユーザーが画面をスクロールすると、すべての画像がWebから再度取得されますか?この場合、どちらが速いのか理解できません。このアプリはFacebookアンドロイドアプリに非常に似ています。

もう1つ - 私のアプリは5分ごとに更新され、リストに新しい画像URLがあれば、バックグラウンドスレッドからプロセス全体が再開されます。私の考えは、以前の画像はキャッシュされているので、再びロードされないということです。新しいURLのみが読み込まれます。これは正しいです?

+1

Facebookアプリに似ています - これはいいです;) –

+0

facebookが画像を読み込む方法に似ています。私はリストビューのスクロールがFacebookのようなアプリのためにどのように機能するのか知りたいのですが、バックグラウンドで画像を読み込んでディスク/メモリにキャッシュしますか?新しい投稿を取得するとどうなりますか? –

答えて

0

UIスレッドは、(私はキャッシングやサイズ変更を確実にするために同じのためのピカソを使用しています。)画像をダウンロードし、それらを表示する

ピカソは、メインアプリケーションスレッド上の画像をダウンロードしませんデフォルト。私はそれをする選択肢があることさえ確信していません。

バックグラウンドスレッドでイメージをダウンロードし、サイズ変更されたビットマップのみを表示用にUIスレッドに渡す必要があるかどうかを知りたいと思います。

ピカソはこれを行う必要があります。

また、両方のシナリオでユーザーが画面をスクロールすると、すべての画像がWebから再度取得されますか?

イメージの数、大きさ、キャッシュのサイズなどによって異なります。 Picasaは、画像ソース(setIndicatorsEnabled(true))からキャッシングがどのように実行されているかを示すStatsSnapshotを取得するために、コーナーのデバッグインジケータ(getSnapshot())から、これがどのように動作しているかを判断するオプションを提供します。

+0

ありがとう!私がアプリ内をスクロールして、ワンクリックでアプリのトップに行くことを決めたとします。そのようなケースを処理する最善の方法は何ですか? –

+0

@PranavSodhani:申し訳ありませんが、私は質問を理解していません。 – CommonsWare

+0

よろしくお願いします。もう一度お試しください。私のアプリでは、ユーザーがアプリを起動したときに最初に10個の画像を読み込みます。ユーザーは画面の一番下まで行くことができます。投稿すると10個の画像がさらに読み込まれます。これはFacebookに投稿がどのように読み込まれているのと同様です。 ユーザーが画面の一番上に移動したい、つまりワンクリックで上にスクロールしたいとします。これを処理する最善の方法は何ですか?新しい画像が読み込まれると、picassoは古い画像をキャッシュから削除しますが、古い画像が表示されるはずです。どのように機能しますか? –

0

すべてのネットワーク操作はAndroidでバックグラウンドで実行されますが、Picassoは例外ではありません。あなたのリストをスクロールすると、ピカソはそれをキャッシュにチェックし、特定のイメージがキャッシュになければそれをダウンロードします。

関連する問題