이미지 프로세싱 중에 반복되는 비트맵 작업 시, Out of Memory 발생
간단한 해결책은 GlideBitmapPool 사용으로 좀 더 안정성 있게 앱을 구동했음 ^^v
1.기존 소스와 Android Profiler
mBitmap = Bitmap.createBitmap(mWidth, mHeight, Bitmap.Config.ARGB_8888);
mBitmap.copyPixelsFromBuffer(IntBuffer.wrap(iat));
반복된 작업에 메모리가 증가하면서 앱이 중지됨. ^^;;
2.GlideBitmapPool 적용 소스와 Android Profiler
mBitmap = GlideBitmapPool.getBitmap(mWidth, mHeight, Bitmap.Config.ARGB_8888);
mBitmap.copyPixelsFromBuffer(IntBuffer.wrap(iat));
GlideBitmapPool.putBitmap(mBitmap);
반복된 작업에도 메모리가 안정적으로 유지됨 ^^v
GlideBitmapPool을 사용하면 Bitmap 관리에 도움이 될 것 같습니다. ^^
3.기타 적용
mStickerThumbBitmap = GlideBitmapPool.getBitmap(120, 120, Bitmap.Config.ARGB_8888);
mStickerThumbBitmap = Bitmap.createScaledBitmap(bitmap, 120, 120, false);
GlideBitmapPool.putBitmap(mStickerThumbBitmap);
-------------------------------------------------------------------------------------------------
출처
https://github.com/amitshekhariitbhu/GlideBitmapPool
얼굴인식해서 크롭하는 것도 있네요 ^^
https://github.com/aryarohit07/GlideFaceDetectionTransformation
다들 오늘도 즐거운 개발이 되길 바랍니다 ^^
'Android Tip' 카테고리의 다른 글
안드로이드 8.0에서의 android.os.FileUriExposedException 버그 해결 (1) | 2018.05.10 |
---|---|
ANR 및 비정상 종료 중 BadTokenException 해결책 (0) | 2018.01.04 |
애니메이션 처리 후 Activity 이동 (0) | 2017.08.25 |
Glide에 대한 기능 정리 (1) | 2017.08.24 |
안드로이드 앱 인덱싱 및 딥링크 연결 정상적으로 되었는지 확인하기 (0) | 2017.07.20 |