これはおそらく以前に尋ねられた可能性がありますが、実行可能な答えはないようです。私たちはバックグラウンドスレッドで要求を実行するRetrofit 2.1.0非同期コールバックを使用しています。ただし、応答が受信されると、コールバックを新しいスレッド内に配置してUIを利用しないようにするかどうかに関係なく、アプリケーションのUIスレッドに返送されますonResponse
。
何らかの理由でメインUIスレッドをブロックしたくないので、応答がバックグラウンドで返される可能性はありますか?
上記が不可能な場合、UIスレッドのブロックを回避するために、応答から別のスレッドを開始することをお勧めしますか?
どんな助けでも大歓迎です。ありがとう!
Retrofit
インスタンスの構築時に実行するコールバックの特定のエグゼキューターを指定できます。コールバックにSingleThreadExecutor
を使用する例を次に示します。
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(/* your url */)
.callbackExecutor(Executors.newSingleThreadExecutor())
// other builder options...
.build();