Retrofit2の戻り値
戻り値の型として、以下の2つを想定し比較する
- Call<T>
- Response<T>
APIの実行
Call<T>を使用する場合
APIの実行はCall<T>クラスの以下のメソッドを使用することになる
- Call#execute()
- 非同期処理
- Call#enqueue()
- 同期処理
Response<T>を使用する場合
APIの実行は、APIの実行メソッドを呼び出すだけ
- APIの実行メソッドをsuspendメソッドにすることで非同期処理になる
APIの結果の受け取り
- Call#excecute()を使用
- Call#excecute()の戻り値であるResponseから行う
- Call#enqueue()を使用
- #enqueue()の引数Callbackのcallbackメソッドから行う
- Response<T>を使用
- 戻り値であるResponseから行う
結論
- Response<T>を使用する
- APIの実行メソッドをsuspendメソッドする
- 非同期処理にし、スレッドをブロックしなくて済む