文件浏览器内存不足

时间:2013-05-21 16:21:03

标签: android video bitmap icons out-of-memory

我正在尝试在文件浏览器中加载视频的缩略图,但这会导致内存不足。

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.文件名,大小,权限,图像图标(如位图)等..

2 个答案:

答案 0 :(得分:0)

你最有可能保留一堆不需要的引用。我的建议是将图像放在LRUCache中并从那里加载它们。这样,您可以设置合理的最大内存量以用于图像。

答案 1 :(得分:0)

我发现了问题,我试图加载完整的图片而不是缩略图。

               file.setImageIcon(ThumbnailUtils.extractThumbnail(BitmapFactory.decodeFile(current + "/" + getName(F)), 100, 100));

感谢。 LukeMovement。