2012-05-29 3 views
3

내 앱에서 사용자가 클릭 할 때 런타임에 이미지을 스왑합니다.드로잉 캐시 삭제

가 첫 번째 이미지에 두 imageviews 사용자가 클릭하고 다음 코드를 다음 처음 이미지 뷰의 이미지의 비트 맵을 가져 와서이를 위해 두 번째 이미지 뷰에 할당하고있어 동시에 내가 사용에서 두 번째 이미지를 클릭 :

public Bitmap createBitmap(ImageView imageview) { 
    imageview.setDrawingCacheEnabled(true); 
    imageview.buildDrawingCache(false); 

    if(imageview.getDrawingCache() != null) { 
     Bitmap bitmap = Bitmap.createBitmap(imageview.getDrawingCache()); 
     imageview.setDrawingCacheEnabled(false); 
     return bitmap; 
    } else { 
     return null; 
    } 
} 

코드가 정상적으로 작동하지만 매번 캐시가 지워지지 않고 이전 캐시로 만든 비트 맵이 어떻게 비트 맵 캐시를 지울 수 있습니까?

+0

pls 이걸 사용하면 https://github.com/thest1/LazyList – himanshu

+0

답변을 선택하십시오 대답을 – breceivemail

답변

2

이것은 샘플입니다. 어디서 사용합니까 Free the native object associated with this bitmap.

Bitmap bitmap; 

public Bitmap createBitmap(ImageView imageview) { 
    if (bitmap != null) { 
     bitmap.recycle(); 
     bitmap = null; 
    } 
    bitmap = Bitmap.createBitmap(imageview.getDrawingCache()); 
    // Your Code of bitmap Follows here 
} 

비트 맵을 사용하기 전에 객체를 해제하십시오.

+0

thnx 답장을 선택하십시오 ...하지만 비트 맵을 사용하기 전에 비트 맵을 재활용해야한다고 생각합니다. 나 틀렸어 – Prachi

+0

@curious_mind : 적절한 시간에 비트 맵을 할당하는 동안 변경. – Bhavin

+0

Honeycomb + 비트 맵은 더 이상 기본 힙에 할당되지 않으며 이제 Dalvik 힙에 있습니다. recycle() 호출은 더 이상 필요하지 않습니다. –

1

bitmap.recycle();을 사용하여 다시 작성하기 전에 캐시를 지우도록 비트 맵을 평가하십시오.

관련 문제