Android アプリケーションではかなり一般的だと思うシナリオがあります。問題を解決するための部分的な試みが行われたことは知っていますが、今まで完全な実装につまずいたことはありません. そのようなコンポーネントを実装し、後でオープンソース化するつもりですが、その設計にはあなたの助けが必要です.
したがって、基本的に私のケースは次のとおりです。Webからロードされた画像と各行のテキストを示すリストビューがあります。画像を遅延ロードし、各画像のデフォルトを配置し、画像がダウンロードされたときにのみ実際の画像に置き換えます。また、短期間に画像を複数回ダウンロードする必要がないように、画像キャッシュを保持したいと考えています。
これまでに、部分的に機能しているいくつかの実装を見つけました。
- Tom van Zummeren による同様のコンポーネントの実装には、いくつかのよく知られている問題があります。
- Jeremy Wadsack による概念の改良。多かれ少なかれ機能しています。
- レイジー ドローアブルソース フォージ プロジェクト。
この問題に関するいくつかのスタックオーバーフローの質問も見ました: 1、2、3
ただし、タスクをもう少し複雑にするもう 1 つの要件があります。それは、アプリケーションのユーザーが自分自身をいくつかの画像に関連付けることを許可することです。ユーザーがホーム画面に移動するたびに、ユーザーに関連付けられた新しい画像をロードしたいと考えています。そこから、すべての画像がダウンロードされる前であっても、画像を見ることができるはずです。この場合も、デフォルトのプレースホルダーが表示されるはずです (クロススクリーン遷移に注意してください)。このような使用例は次のとおりです。
- ユーザーの YouTube 動画を一覧表示するアプリ
- Facebookのアプリ - 友達の画像を考える
- ユーザーのお気に入りなどをサポートするニュース配信アプリ
ユーザーエクスペリエンスを向上させるために、ホーム画面でユーザーに関連する新しいデータの取得を開始したいことに注意してください。ユーザー関連のデータをローカルに永久に保存します。
質問
私の基本的な質問は、画像のダウンロードの実装にどのアプローチを使用する必要があるかということです。Service
アプリケーションが実行されていなくても、タスクを実行したい場合にのみ使用する必要があるとAndroidのマニュアルに記載されていることを知っています。反対側では、ホーム画面で画像のダウンロードを開始し、ユーザーが新しい画面 ( Activity
) - ユーザー関連のリスト ビューに移動したときに、ダウンロードを UI 要素にリンクしAsyncTask
ます。私はどちらかでそれを行う方法を非常に正確に考えていService
ます)。
リンクを含め、どんな提案でも大歓迎です。