Java의 Static 활용 시에는 호출 시점에 인스턴스가 생성되지만, Kotlin의 Object는 프로세스가 메모리 상에 올라가는 순간 바로 생성된다. 이는 즉, 굳이 사용되지 않을 때에도 메모리에 인스턴스가 존재하기 때문에 어떤 경우에는 주의할 필요가 있다.
object RetrofitInstance {
init {
//initialize
}
private const val BASE_URL = ""
private val retrofit:Retrofit = Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
}
class RetrofitInstance {
companion object ApiInstance {
val BASE_URL = ""
val interceptor = HttpLoggingInterceptor().apply {
this.level = HttpLoggingInterceptor.Level.BODY
}
val client = OkHttpClient.Builder().apply {
this.addInterceptor(interceptor)
.connectTimeout(20, TimeUnit.SECONDS)
}.build()