Skip to content

Commit 2292453

Browse files
committed
Feat: Coil 라이브러리 커스텀 ImageLoader 설정
1 parent ae9b324 commit 2292453

3 files changed

Lines changed: 54 additions & 1 deletion

File tree

app/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,4 +100,5 @@ dependencies {
100100
implementation(libs.bundles.retrofit)
101101
implementation(platform(libs.okhttp.bom))
102102
implementation(libs.bundles.okhttp)
103+
implementation(libs.bundles.coil)
103104
}

app/src/main/java/com/threegap/bitnagil/BitnagilApplication.kt

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,54 @@
11
package com.threegap.bitnagil
22

33
import android.app.Application
4+
import coil3.ImageLoader
5+
import coil3.PlatformContext
6+
import coil3.SingletonImageLoader
7+
import coil3.disk.DiskCache
8+
import coil3.memory.MemoryCache
9+
import coil3.network.okhttp.OkHttpNetworkFetcherFactory
10+
import coil3.request.CachePolicy
11+
import coil3.request.crossfade
12+
import coil3.util.DebugLogger
413
import com.kakao.sdk.common.KakaoSdk
14+
import com.threegap.bitnagil.di.core.CoilEntryPoint
15+
import dagger.hilt.EntryPoints
516
import dagger.hilt.android.HiltAndroidApp
17+
import okio.Path.Companion.toOkioPath
618

719
@HiltAndroidApp
8-
class BitnagilApplication : Application() {
20+
class BitnagilApplication : Application(), SingletonImageLoader.Factory {
21+
922
override fun onCreate() {
1023
super.onCreate()
1124
initKakaoSdk()
1225
}
1326

27+
override fun newImageLoader(context: PlatformContext): ImageLoader {
28+
val okHttpClient = EntryPoints
29+
.get(this, CoilEntryPoint::class.java)
30+
.noneAuthOkHttpClient()
31+
32+
return ImageLoader.Builder(context)
33+
.components { add(OkHttpNetworkFetcherFactory(callFactory = { okHttpClient })) }
34+
.memoryCache {
35+
MemoryCache.Builder()
36+
.maxSizePercent(context, percent = 0.25)
37+
.build()
38+
}
39+
.diskCache {
40+
DiskCache.Builder()
41+
.directory(cacheDir.resolve("image_cache").toOkioPath())
42+
.maxSizeBytes(50L * 1024 * 1024)
43+
.build()
44+
}
45+
.memoryCachePolicy(CachePolicy.ENABLED)
46+
.diskCachePolicy(CachePolicy.ENABLED)
47+
.crossfade(true)
48+
.logger(if (BuildConfig.DEBUG) DebugLogger() else null)
49+
.build()
50+
}
51+
1452
private fun initKakaoSdk() {
1553
KakaoSdk.init(this, BuildConfig.KAKAO_NATIVE_APP_KEY)
1654
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.threegap.bitnagil.di.core
2+
3+
import com.threegap.bitnagil.network.NoneAuth
4+
import dagger.hilt.EntryPoint
5+
import dagger.hilt.InstallIn
6+
import dagger.hilt.components.SingletonComponent
7+
import okhttp3.OkHttpClient
8+
9+
@EntryPoint
10+
@InstallIn(SingletonComponent::class)
11+
interface CoilEntryPoint {
12+
@NoneAuth
13+
fun noneAuthOkHttpClient(): OkHttpClient
14+
}

0 commit comments

Comments
 (0)