I am creating a file manager and I'd like to create thumbnails for videos/pictures on device. But when I scroll items too fast, the performance falls and sometimes my app just crashes because too many thumbnails are being created at one time
The main BIND part of my ViewHolder
:
new Thread(new Runnable() {
@Override
public void run() {
final Bitmap[] btm = {null};
if(mimeType.startsWith("video/") || mimeType.startsWith("image/")){
if(mimeType.startsWith("video/")){
btm[0] = ThumbnailsHelper.createThumbForVideo(file.getAbsolutePath());
}else if(mimeType.startsWith("image/")){
btm[0] = ThumbnailsHelper.createThumbForPic(file.getAbsolutePath());
}
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
mFileIcon.setImageBitmap(btm[0]);
}
});
}
}
}).start();
My RecyclerView
settings:
mRecyclerView.setItemViewCacheSize(20);
mRecyclerView.setDrawingCacheEnabled(true);
mRecyclerView.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);
In apps like ZArchiver or similar I saw that thumbnails are shown only when user isn't scrolling RecyclerView
items. So, how can I improve the situation and maybe anybody knows how to make it like in ZArchiver?