Android Developer

Retrofit2 의 Callback 자동 완성을 찾기 귀찮을때

졸려질려 2022. 5. 24. 17:20
반응형

 Android 앱을 개발하면서 서버의 API 와 연동할 때, Retrofit 을 주로 사용합니다. 그래서 Retrofit 의 Callback 인터페이스도 많이 사용하게 됩니다. 새로운 Presenter 나 ViewModel 을 추가하게 되면 Import 한 Package 리스트가 없이 도화지 상태에서 시작하기 때문에 Callback 의 Package 도 다시 추가를 해주어야합니다.

 Android Studio 의 자동완성 기능은 정말 좋아서 Callback 을 붙일 때 꼭 사용하고 있습니다. 자동완성으로 넣어주면 Package Import 까지 같이 해주기 때문이죠. 하지만, 위 사진과 같이 Callback 이라는 이름의 인터페이스와 추상클래스가 무수히 많습니다.

 아래에서부터 찾으면 금방 Retrofit2 의 Callback 을 찾을 수 있긴 합니다.

 그런데 ViewModel 급의 클래스를 추가할 때마다 저걸 찾아야 하는 귀찮음이 갑자기 저를 강타했습니다. 그래서 Retrofit2 의 Callback 인터페이스를 상속받아서 제가 원하는 이름으로 인터페이스를 만들면 쉽게 할 수 있지 않을까해서 해보게 되었습니다.

import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response

interface ApiCallback<T>: Callback<T> {
    override fun onResponse(call: Call<T>, response: Response<T>)
    override fun onFailure(call: Call<T>, throwable: Throwable)
}

 Retrofit2 의 Callback 인터페이스는 Generic 이 포함되어 있습니다. 그래서 Generic 도 같이 상속을 받아서 해주어야 합니다. 위 코드와 같이 Retrofit2 의 Callback 인터페이스를 제가 원하는 이름으로 바꾸어주었습니다.

 그러면 구현하는 쪽에서 위 사진과 같이 한 번에 찾을 수 있습니다.

 이런 과정을 겪으면서 한가지 생각을 하게 되었습니다. 서버 API 통신을 할 때, 더 귀찮은 것은 아마 데이터의 Null 혹은 200 OK 이지만 거의 실패와 다름 없는 메시지가 오는 경우를 onResponse 안에서 처리를 해주는 과정이라 생각합니다. 그래서 Callback 을 상속 받으면서 공통적인 API Response 의 전처리 과정을 구현하고 새로운 콜백으로 넘겨주면 편하지 않을까 했습니다. 이 생각은 다음에 한 번 해보고 블로그에 새로운 글로 써보겠습니다.

반응형