0
RecyclerView.Adapter
onBindViewHolder
は次のようになりましたになります。Androidのメモリにイメージをキャッシュするのは意味がありますか?
@Override
public void onBindViewHolder(UserSettingHolder userSettingHolder, int i) {
// .. some code
try {
// TODO: Image loader need
File file = new File(MainActivity.context.getFilesDir(), _id + ".photo");
InputStream in = new BufferedInputStream(new FileInputStream(file));
byte[] buf = new byte[(int) file.length()];
int numRead = in.read(buf);
Bitmap bitmap = BitmapFactory.decodeByteArray(buf, 0, numRead);
userSettingHolder.icon.setImageBitmap(bitmap);
} catch (Exception e) {
System.out.print(e);
}
}
私はかなり頻繁に呼び出されていないonBindViewHolder
でespeciallどのファイルシステムから常にファイルを読むためには効率的ではないと思います。イメージを保存するために 'メモリキャッシュ'を使用することを提案しますか? iOSではNSCache
がこのために提供されています。メモリが不足している場合は、最初にパージされます。NSCache
には利点があります。
Androidの代替技術とは何ですか?
LruCache ///// ... – Selvin
もいくつかのヒント... onBindViewHolderでdecodeByteArrayやIO操作を使用していません...このために別のスレッドを使用します...しかし、ビューリサイクルのために実装するのは難しいです(image1からview1への読み込みが開始されました... view1がリサイクルされています)。画像1の読み込みが終了しました...間違った画像が表示されます)...既に存在する画像ローダーライブラリの1つを使用してください...ほとんどがメモリキャッシュを持っています – Selvin
Picasso、Glide、Universal Image Loader.Takeピック。 –