[kotlin] 비트맵 처리 최적화 방법
안드로이드 애플리케이션에서 비트맵 처리는 성능에 중요한 영향을 미칩니다. 비트맵 처리를 최적화하려면 다음과 같은 방법을 고려할 수 있습니다.
1. 메모리 관리
비트맵을 사용한 후에는 반드시 recycle()
메서드를 호출하여 메모리를 해제해야 합니다. 이외에도 메모리 누수를 방지하기 위해 큰 이미지를 로드할 때는 inJustDecodeBounds
를 사용하여 이미지를 실제로 디코딩하기 전에 이미지의 크기를 확인합니다.
val options = BitmapFactory.Options().apply {
inJustDecodeBounds = true
}
BitmapFactory.decodeResource(resources, R.drawable.image, options)
val imageWidth = options.outWidth
val imageHeight = options.outHeight
2. 캐시 활용
비트맵을 반복적으로 로드해야 하는 경우, 캐시를 사용하여 이미 로드한 비트맵을 재활용할 수 있습니다. 안드로이드에서는 LruCache나 이미지로딩 라이브러리의 캐시 기능을 활용할 수 있습니다.
val cache = LruCache<String, Bitmap>(maxCacheSize)
fun getBitmapFromCache(key: String): Bitmap? {
return cache.get(key)
}
fun putBitmapInCache(key: String, bitmap: Bitmap) {
cache.put(key, bitmap)
}
3. 이미지 크기 조절
앱에서 사용되는 이미지의 크기를 디스플레이 크기에 맞게 조절하여 불필요한 메모리 소비를 방지할 수 있습니다.
val scaledBitmap = Bitmap.createScaledBitmap(originalBitmap, newWidth, newHeight, true)
비트맵 처리를 최적화하여 안드로이드 애플리케이션의 성능을 향상시킬 수 있습니다.
참고 자료
- Android Developer - Managing Bitmap Memory
- Android Developer - Caching Bitmaps