2015-09-03 43 views
-1

我正在阅读从SD卡使用此代码的图像。但是当我启动应用程序时,最多需要5秒钟才能启动。你能给我一些建议,我怎样才能减少阅读图像的时间。这是代码 -如何解决android中图像读取速度慢的问题?

ArrayList<File> imageReader(File root){ 

    ArrayList<File> a = new ArrayList<>(); 
    b = new ArrayList<>(); 

    File[] files = root.listFiles(); 
    for (int i=0;i<files.length;i++){ 
     if (files[i].isDirectory()){ 

      a.addAll(imageReader(files[i])); 
     } 
     else{ 

      if (files[i].getName().endsWith(".jpg")) { 

      a.add(files[i]); 

      } 
     } 
    } 

return a; 
} 
+0

多少图片,你呢?显然你的代码会让应用程序停留在主线程中。 – Sufian

回答

0

取出递归

public static List<File> getAllFiles(File root) { 

    List<File> files = new ArrayList<File>(); 
    files.addAll(Arrays.asList(root.listFiles()); 
    List<File> images = new ArrayList<File>(); 
    for (int i=0; i < files.size(); i++) { 
     File aFile = files.get(i); 
     if (aFile.isDirectory()) { 
      files.addAll(Arrays.asList(aFile.listFiles()); 
      continue; 
     } 
     if (aFile..getName().endsWith(".jpg")) { 
     images.add(aFile); 
     } 
    return images; 
} 

使用一个后台线程

new Thread() { 

    public void run() { 
     System.out.prinln(getAllFiles(File.listRoots()[0]); 
    } 
}.start();