web-dev-qa-db-ja.com

バックグラウンドスレッドのRetrofit 2コールバックonResponse

これはおそらく以前に尋ねられた可能性がありますが、実行可能な答えはないようです。私たちはバックグラウンドスレッドで要求を実行するRetrofit 2.1.0非同期コールバックを使用しています。ただし、応答が受信されると、コールバックを新しいスレッド内に配置してUIを利用しないようにするかどうかに関係なく、アプリケーションのUIスレッドに返送されますonResponse

何らかの理由でメインUIスレッドをブロックしたくないので、応答がバックグラウンドで返される可能性はありますか?

上記が不可能な場合、UIスレッドのブロックを回避するために、応答から別のスレッドを開始することをお勧めしますか?

どんな助けでも大歓迎です。ありがとう!

13
Zishan

Retrofitインスタンスの構築時に実行するコールバックの特定のエグゼキューターを指定できます。コールバックにSingleThreadExecutorを使用する例を次に示します。

Retrofit retrofit = new Retrofit.Builder()
        .baseUrl(/* your url */)
        .callbackExecutor(Executors.newSingleThreadExecutor())
        // other builder options...
        .build();
25
iagreen