我正在尝试在文件浏览器中加载视频的缩略图,但这会导致内存不足。
public class Filea {
private Bitmap VideoIcon;
public Bitmap getVideoIcon() {
return VideoIcon;
}
public void setVideoIcon(Bitmap videoIcon) {
VideoIcon = videoIcon;
}
这是针对文件夹中的每个视频文件进行的。
每次加载新文件夹时都会保留上一个文件夹中的信息,如果有,我该如何删除不需要的资源?
private List<Filea> LoadFiles(String dirPath) {
inSearch = false;
List<Filea> files = new ArrayList<Filea>();
try {
for(String F:EditedFileList(current)) {
Filea file = new Filea();
file.setVideoIcon(ThumbnailUtils.createVideoThumbnail(current + "/" + getName(F), MediaStore.Images.Thumbnails.MINI_KIND));
files.add(file);
}
} catch (NullPointerException e) {
e.getStackTrace();
} catch (NoSuchElementException e) {
Log.i("LoadFiles", "No files found");
}
return files;
}
这是获取信息的方式。
除了视频缩略图,我正在加载其他数据位E.g.文件名,大小,权限,图像图标(如位图)等..
答案 0 :(得分:0)
你最有可能保留一堆不需要的引用。我的建议是将图像放在LRUCache中并从那里加载它们。这样,您可以设置合理的最大内存量以用于图像。
答案 1 :(得分:0)
我发现了问题,我试图加载完整的图片而不是缩略图。
file.setImageIcon(ThumbnailUtils.extractThumbnail(BitmapFactory.decodeFile(current + "/" + getName(F)), 100, 100));
感谢。 LukeMovement。