Android 如何高效地查询包含图像的所有目录的列表?
我需要查询MediaStore并获取所有存储桶名称作为列表。这很容易做到,而且在stackoverflow上有很多问题的答案,但是所有的答案都有一个很大的效率问题。他们都会查询所有图像以获得画廊列表。因此,如果在10个目录中有数千个图像,那么查询这10个目录名将花费太多时间。我想知道是否有更好的方法可以在不查询所有图像的情况下查询这些目录列表。经过战斗测试的代码:Android 如何高效地查询包含图像的所有目录的列表?,android,gallery,mediastore,bucket,Android,Gallery,Mediastore,Bucket,我需要查询MediaStore并获取所有存储桶名称作为列表。这很容易做到,而且在stackoverflow上有很多问题的答案,但是所有的答案都有一个很大的效率问题。他们都会查询所有图像以获得画廊列表。因此,如果在10个目录中有数千个图像,那么查询这10个目录名将花费太多时间。我想知道是否有更好的方法可以在不查询所有图像的情况下查询这些目录列表。经过战斗测试的代码: public void collectPhotosInFolder(File directory, boolean recurse,
public void collectPhotosInFolder(File directory, boolean recurse, List<File> list) {
Log.i(Constants.LOG_TAG, "Reading photos in file system folder " + directory.getAbsolutePath());
File[] files = directory.listFiles(new FileFilter() {
@Override
public boolean accept(File file) {
String name = file.getName();
if (name.contains(".")) {
String ext = name.substring(name.lastIndexOf('.') + 1);
return ((ext.compareToIgnoreCase("jpg") == 0) || (ext.compareToIgnoreCase("jpeg") == 0) || (ext.compareToIgnoreCase("png") == 0));
}
return false;
}
});
if (files == null)
files = new File[0];
for (File file : files)
list.add(file);
if (recurse) {
File[] dirs = directory.listFiles(new FileFilter() {
@Override
public boolean accept(File file) {
return file.isDirectory();
}
});
for (File dir : dirs)
collectPhotosInFolder(dir, recurse, list);
}
}