我正在尝试制作像应用程序一样的照片库,但是当我将位图对象添加到arraylist时,我将钳制目标GC堆从128MB到128MB

时间:2017-12-23 17:59:00

标签: android bitmap

for循环工作7次,但在应用程序崩溃之后。在内存图中,它显示了124mb的级别。

protected void onCreate(Bundle savedInstanceState) {      
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_first);

    String path=Environment.getExternalStorageDirectory().toString()+"/Pictures";
    File direct = new File(path);
    File[] dirFiles=direct.listFiles();

    ArrayList<Bitmap> arr= new ArrayList<>();

    for (int i=0 ; i < dirFiles.length;i++){    
        Bitmap myBitmap =  BitmapFactory.decodeFile(dirFiles[i].getAbsolutePath());     
        arr.add(myBitmap);            
        Log.v("image number",""+i);        
     } 

    //ImageAdapter imgAdp = new ImageAdapter(this,arr);

    //ListView lv=(ListView)findViewById(R.id.rootView);

    //lv.setAdapter(imgAdp);
}

1 个答案:

答案 0 :(得分:0)

您应该使用像Android-Universal-Image-Loader这样的图像缓存库,而不是将所有位图添加到arraylist 这就是你如何将它与文件一起使用

ImageLoader.getInstance().displayImage(Uri.decode(Uri.fromFile(new File(pathToFile)).toString()),   viewHolder.svg,options);}});