2015-09-03 67 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();