Android-释放位图的内存

时间:2018-08-13 16:21:33

标签: java android memory memory-management

我认为这个问题经常被问到,但是在我问完之后

bitmap.release;
bitmap = null;

在片段的 onDestroy 中,使用的内存与以前一样多。

片段:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    initializeViews();
    croppedBitmap = BitmapFactory.decodeFile("/.../0001.jpeg");
    imageView.setImageBitmap(croppedBitmap);
    fabCreate.setOnClickListener(...); //never called
}

@Override
public void onDestroy() {
    clearMemory();
    super.onDestroy();

}
void clearMemory(){

    fabCreate.setOnClickListener(null);
    imageView.setImageBitmap(null);
    imageView = null;
    croppedBitmap.recycle();
    croppedBitmap = null;
    java.lang.System.gc();
}

1 个答案:

答案 0 :(得分:1)

尝试使用

if(bitmap != null){
   bitmap.recycle();
   bitmap = null;
}

有关更多信息,请阅读similar question