繁体   English   中英

在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首歌曲..)。 我想知道如何才能更有效地实现这一目标。

您可以尝试:

  • 使用AsyncTask检索另一个线程中的歌曲。
  • 而是从Android的媒体数据库获取歌曲列表-您将必须使用SQL和MediaStore.Audio 记住要使用AsyncTask或Loader

第二种选择会更快,因为您不必遍历整个系统。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM