메뉴가있는 애플리케이션이 있습니다. 메뉴 항목은 ViewAnimator
의 스크린 샷입니다. 모든 것이 잘 작동합니다.Android 3.0에 내장 된 드로잉 캐시의 메모리를 비울 수 없습니다.
layout.destroyDrawingCache();
bm.recycle();
bm = null;
그러나 unfortunatelly :
// Drawing cache is off, so build it manually and create scaled bitmap
layout.buildDrawingCache();
Bitmap bm = layout.getDrawingCache();
Bitmap bm_small = Bitmap.createScaledBitmap(bm, item_width, item_height, true);
을 동일한 기능에서 내가 스크린 샷을 만드는 데 사용되는 모든 메모리를 해제하려고 : 많은 예에서 작성된 나는 그리기 캐시를 사용하여,이 간단한 스니 플릿으로 screeshots을 가비지 수집기가이 비트 맵 메모리를 비우지 않습니다. 또한 HPROF 메모리를 사용하여 해방 할 수없는 Bitmap에 대한 참조를 찾았지만 성공하지 못했습니다. 중요한 정보는 Honeycomb Android 3.0 용으로 개발 중이므로 스크린 샷이 상당히 크다는 것입니다. 모든 스크린 샷에는 약 3MB의 메모리가 필요하며 무료로 사용하지 마십시오.
이 예제에서는 재활용이 작동하지 않는 이유를 알지 못합니다. 안드로이드 3.0 허니 콤 + 하드웨어 가속 활성화 + 큰 힙 사용 + 드로잉 캐시 사용. 내가 발견 한 어떤 힌트도 도움이되지 않습니다.
제발, 당신은 왜 recycle
이이 경우에 작동하지 않는지 설명 할 수 있습니까? 어떤 도움을 주시면 감사하겠습니다.
답변 해 주셔서 감사합니다. 내가 아는 한 전체 레이아웃에서 스크린 샷을 만들어야하기 때문에 더 작은 비트 맵을 사용할 수 없습니다. 그리고 SoftReference 솔루션은 비트 맵에 대한 참조를 저장하지 않기 때문에 여기에 적용 할 수 없습니다. / –