1

ユーザーが画像を人に割り当て、その人の名前で画像を表示できるアプリケーションに取り組んでいます。私が現在行っていることは、人をクリックすると、その人のすべての画像が個々ImageViewの s に読み込まれるということです。これは、3 つまたは 4 つの画像を読み込む場合には問題なく機能しますが、20 以上の画像が含まれる場合は、処理が少し遅くなります。

だから、私の質問は次のとおりです。アプリケーションを完全に遅らせることなく、これらの画像をファイルから効率的にロードするにはどうすればよいですか?


私が考えたこと:

  1. メインアプリケーションを起動する前に、すべての人からすべての画像をロードするプリローダー。ファイルの 1 つが削除されると、問題が発生します。
  2. 画像を表示する前にすべての画像をロードするためのミニプリローダーがあります。
  3. ユーザーが人物をクリックしたときに、ローダーなしで画像をロードします。
4

1 に答える 1

4

アプリケーションのスケーラビリティを維持したい場合 (何百もの画像を順番に)、アプリケーションの開始前にすべてをロードすることは現実的ではありません。

アプリケーションの遅延が発生している理由は、おそらくハード ドライブの帯域幅が制限されているためです (プロファイリングが必要な場合があります)。画像の読み込みを改善するためにできることはいくつかありますが (最適化された画像フォーマットを使用する、画像の縮小版を保存するなど)、ある時点で常にディスクから何かを読み込むことになります。

ImageView1)とで構成されるカスタム ノードを作成することをお勧めしますProgressIndicator。追加の画像が読み込まれていることをユーザーに知らせます。

2) ディスクを待機している間の過度のブロックを回避するために、限られた数のワーカー スレッドにイメージをロードさせる

3) 可能であれば、画像をプリロードしてキャッシュします。SoftReferencesこれは、 の使用が実際に良い考えである数少ないケースの 1 つです。

于 2013-06-09T21:24:22.120 に答える