2015-01-04 8 views
0

두 번째 방법이 더 효율적이라고 생각하지만 한 가지 개선점이 있다고 말할 수는 없습니다. 다음 두 가지의 차이점이 있습니까? 그것은 어떤 영향을 미칠 것입니다 ...Android - 비트 맵 작업, 소스 비트 맵 유지 또는 두 번째 비트 맵 사용 및 소스 재활용

Bitmap bm=MediaStore.Images.Thumbnails.getThumbnail(getContentResolver(), id, MediaStore.Images.Thumbnails.MINI_KIND, null); 
bm=cropAndScaleBitmap(bm); 
//use bm 

Bitmap bm=MediaStore.Images.Thumbnails.getThumbnail(getContentResolver(), id, MediaStore.Images.Thumbnails.MINI_KIND, null); 
Bitmap b =cropAndScaleBitmap(bm); 
bm.recycle(); 
//use b 

답변

0

상황이 여기서주의 할 대 당신이 재활용를 지정하더라도

을 (당연히 현명한 memmory)에만 경우 다음을 GC가 trigerred입니다.

다른 일들이 비트 맵 메모리가 있었다 안드로이드의 사전 허니 콤 버전의

  1. 주의 할를 수집하기 위해 GC의 적어도 2 개 패스를 취할 것입니다 관리되지 않는 memory.It에서 할당 (한다). 또 다른 것은 - 추적하기가 정말 어렵습니다 - DDMS는 그것을 보지 않으며 매트도 않습니다.

  2. 이 링크를 읽으십시오 https://developer.android.com/training/displaying-bitmaps/manage-memory.html. api level> 10 인 경우, 우리는 재활용을 요청할 필요가 없다고 생각합니다.

이 링크 참조 ... 단계별 구현 방법에 대한 모든 세부 정보와 코드 샘플을 제공합니다. 이 도움이

https://developer.android.com/training/displaying-bitmaps/manage-memory.html

희망.

0

소스를 다시 사용하지 않는 구체적인 예에서는 bm의 값을 덮어 쓰면 새로운 비트 맵을 가리키게됩니다.이 경우 더 이상 소스에 recycle을 호출 할 수 없습니다 비트 맵은 더 이상 참조가 없습니다.

두 번째 방법을 사용하여 원본 비트 맵을 재활용하는 것이 좋습니다.