![](/img/trans.png)
[英]What is the efficient way to compare a ArrayList of String in android
[英]What is an Efficient way of searching for files in storage in Android?
我正在用android创建音乐播放器应用。 在MainActivity中,我将所有(.mp3,.wav,.flac)文件列出在一个简单的列表视图中。 我正在使用此getSongs
方法搜索此类文件:
public void getSongs(File root) {
File listFile[] = root.listFiles();
if (listFile != null && listFile.length > 0) {
for (int i = 0; i < listFile.length; i++) {
if (listFile[i].isDirectory() && !listFile[i].isHidden()) {
getSongs(listFile[i]);
} else {
if (listFile[i].getName().endsWith(".mp3") ||
listFile[i].getName().endsWith(".MP3") ||
listFile[i].getName().endsWith(".flac")||
listFile[i].getName().endsWith(".wav")) {
songList.add(listFile[i]);
}
}
}
}
}
然后从主要活动中,我称之为:
File externalSD = new File("/storage/"); //gets the external but not internal!!
getSongs(externalSD);
File internalSD = new File(Environment.getExternalStorageDirectory().getAbsolutePath()); //gets the internal but not external!!
getSongs(internalSD);
对我来说效果很好(我只有100首歌曲),但是如果您有很多这样的文件,那确实很慢(我的朋友大约有2.5k首歌曲..)。 我想知道如何才能更有效地实现这一目标。
您可以尝试:
第二种选择会更快,因为您不必遍历整个系统。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.