마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

bitmap recycle질문입니다.

0 추천

안녕하세요 좀전에 바보같은 질문을햇던 초보개발자입니다.

코드보시죠

if(convertView != null){
   try {
    ImageView img_album = (ImageView)convertView.getTag(R.id.img_album);
    BitmapDrawable d = (BitmapDrawable) img_album.getDrawable();
    
    if(d != null){
     
     Log.d("--", "recycle");
     d.getBitmap().recycle();
     d = null;

     img_album.setImageBitmap(null);
    }

필요한 부분만 붙혀넣었습니다.

지금현제 gridview getview에 저 코드가 있구요

d.getBitmap().recycle();

여기에서 에러가 나고 있습니다..

저걸지우면 잘되더군요..

스크롤을 조금하다보면.. 죽ㅇㅓ버리네요;;

recycle저런식으로 하는게 아닌가요??

mamongs (4,050 포인트) 님이 2013년 11월 12일 질문

3개의 답변

0 추천

recycle을 저런식으로 하는지 아닌지는 잘 모르겠구요

에러 로그를 올려주셔야 왜 죽는지는 빨리 알 수 있을듯 싶습니다만

의심되는 부분은 이 부분입니다.

d.getBitmap().recycle();

아마도 d.getBitmap() 에 대한 널체크를 한번더 해야 할겁니다. 

Gradler (109,780 포인트) 님이 2013년 11월 12일 답변
0 추천
로그가 없어 확신은 못하겠지만요, 예상되는 문제점은

img_album 에서 참조되고 있는 비트맵을 recycle 하셔서 그럴 겁니다.

recycle 하기 전에 img_album.setImageBitmap(null); 을 해보세요.
ire (3,900 포인트) 님이 2013년 11월 12일 답변
0 추천
뷰에 넣으신 비트맵은 recycle 안하셔도 됩니다. 뷰에 들어간 비트맵은 알아서 메모리 해지 됩니다.

죽은 이유는 윗분들 답변처럼 getBitmap이 Null 일수도 있고

뷰에서 사용중인 비트멥 리소스를 recycle 해버려서 발생할 수도 있습니다.

위 코드에서 리사이클 부분을 주석 처리 해버리시면 무난할거 같네요.
whitesnow (8,920 포인트) 님이 2013년 11월 13일 답변
...