일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 안드로이드 갤러리 접근
- 카카오 알고리즘
- Android
- MVP Architecture
- Kotlin FCM
- 프로그래머스 알고리즘
- OkHttp Interceptor
- WebView
- Kotlin
- Java
- scope function
- 66챌린지
- 알고리즘 자바
- Android Navigation
- 습관만들기
- android recyclerview
- Android WebView
- Android 12
- Android 12 대응
- 영어독립365
- Android ProgressBar
- Android ViewPager2
- Android DataBinding
- Android Jetpack
- 안드로이드
- 영어공부
- DataBinding
- 안드로이드 카카오 로그인
- 안드로이드 fcm
- Android Interceptor
Archives
- Today
- Total
Developer Geek
Android Retrofit Singleton Example in Kotlin 본문
반응형
Retrofit Singleton
왜 Retrofit을 Singletone으로?
Singleton Class가 사용되는 이유는 일반적으로 객체를 생성하면 시스템 리소스가 객체가 생성되는 만큼 사용되기 때문이다. 그래서 각각의 객체를 생성해 리소스를 사용하기보다는 하나의 객체를 생성해 필요할 때마다 객체를 생성하지 않고 같은 객체를 사용하는 것이다.
Singleton Class 대표적 특징은 아래와 같다.
- Only one instance: Singleton Class는 해당 클래스에 하나의 객체만을 제공한다. 또한
outer classes
나subclasses
에서 해당 객체 생성을 막는다. - Globally accessible: Singleton 객체는 전역에서 접근하여 사용할 수 있다.
- 그래서 NetworkService, DatabaseService 등 오직 하나의 객체만 필요한 경우에 사용된다.
Retrofit 객체 Singleton 사용 예제
build.gradle(:app): Retrofit 사용을 위한 Dependency 추가, GsonConverter 추가
dependencies {
..
// https://mvnrepository.com/artifact/com.squareup.retrofit2/retrofit
implementation("com.squareup.retrofit2:retrofit:2.9.0")
// gson converter
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
..
}
RetrofitClient.kt
object RetrofitClient {
private const val BASE_URL = "https://run.mocky.io"
val retrofit: Retrofit = Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
}
ProductService.kt
interface ProductService {
@GET("v3/9fb33b80-8b3a-4c9f-b608-764bc60eae98")
fun getProducts(): Call<ProductDto>
}
MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
...
val retrofit = RetrofitClient.retrofit
retrofit.create(ProductService::class.java).getProducts()
.enqueue(object : Callback<ProductDto> {
override fun onResponse(call: Call<ProductDto>, response: Response<ProductDto>) {
Log.d(TAG, "onResponse: ${response.body()}")
}
override fun onFailure(call: Call<ProductDto>, t: Throwable) {
Log.e(TAG, "onFailure: ${t.message}")
}
})
}
}
반응형
'안드로이드 > Network' 카테고리의 다른 글
Retrofit + Interceptor 예제 in Kotlin (0) | 2022.06.09 |
---|---|
OkHttp Interceptor in Android Kotlin (2) | 2022.06.08 |
Retrofit2 in Kotlin (0) | 2022.05.30 |
Retrofit2 in Java (0) | 2022.05.29 |
안드로이드 인터넷 접근 권한 허용 (0) | 2022.05.05 |
Comments