개발여행일지~
Glide VS Coil 차이점을 알아보자! 본문
1. Coil은 뭐지??
Coil은 Coroutine Image Loader의 약자로 Kotlin Coroutine으로 만들어진 가벼운 Android 이미지 로딩 라이브러리입니다.
코일에서는 총 4가지 장점을 위주로 소개하고 있습니다.
- Fast
- 코일은 메모리 및 디스크 캐싱, 메모리의 이미지 downsampling, 자동 중지/취소 요청 등 다양한 최적화를 수행합니다
- Lighweight
- Coil은 2000개의 메서드를 APK(이미 OkHttp와 Coroutines를 사용하는 앱)에 추가합니다. 이는 Ficasso와 비슷하며 Glide와 Fresco보다 훨씬 작습니다
- Easy to use
- 코일의 API는 코틀린의 단순성과 최소한의 boilerplate으로 영향을 미친다
- Modern
- 코일은 Kotlin친화적이고 Coroutines, OkHttp, Okio, AndrodiX Lifecycles를 포함한 최신 라이브러리들을 사용합니다
2. Coil의 사용방법
Dependency 추가
앱 단위 build.gradle 파일에 다음 코드를 추가합니다.
implementation("io.coil-kt:coil:2.2.2")
이미지 불러오기
Glide보다 훨씬 간단하게 .load를 붙여주면 이미지 로딩이 됩니다.
// URL
imageView.load("https://www.example.com/image.jpg")
// File
imageView.load(File("/path/to/image.jpg"))
// And more...
3. Glide vs. Coil 메모리 사용량 비교
Glide 테스트코드
fun loadImageWithGlide(imageView: AppCompatImageView, imageUrl: String, funcName: String) {
Log.d("ImageProcessTime", "$funcName glide 시작")
val glideStartTime = System.currentTimeMillis()
Glide.with(this)
.load(imageUrl)
.listener(object : RequestListener<Drawable> {
override fun onLoadFailed(
e: GlideException?,
model: Any?,
target: Target<Drawable>?,
isFirstResource: Boolean,
): Boolean {
return false
}
override fun onResourceReady(
resource: Drawable?,
model: Any?,
target: Target<Drawable>?,
dataSource: DataSource?,
isFirstResource: Boolean,
): Boolean {
val glideEndTime = System.currentTimeMillis()
Log.d("ImageProcessTime", "$funcName processTime: ${(glideEndTime - glideStartTime) / 1000}")
// Log.d("check@@@", "${resource} ${model} ${target} ${dataSource} ${isFirstResource}")
return false
}
})
.into(imageView)
}
Coil 테스트코드
fun loadImageWithCoil(imageView: AppCompatImageView, imageUrl: String, funcName: String) {
Log.d("ImageProcessTime", "$funcName Coil 시작")
val coilStartTime = System.currentTimeMillis()
imageView.load(imageUrl) {
crossfade(true)
listener { request, result ->
val coilEndTime = System.currentTimeMillis()
Log.d("ImageProcessTime", "$funcName processTime: ${(coilEndTime - coilStartTime) / 1000}")
}
}
}
'코틀린 공부정리' 카테고리의 다른 글
ScaleType의 여러가지 속성 (0) | 2023.10.19 |
---|---|
Firebase Realtime Database와 Cloud Firestore의 차이점 (0) | 2023.10.18 |
WIL(팀주간회고) (2) | 2023.10.13 |
Manifest에서 Activity의 name이 오류가 뜨는 문제 (0) | 2023.10.13 |
파이어베이스(Firebase)란 무엇인가! (0) | 2023.10.12 |