2016-12-28 25 views
6

これはおそらく前に求められていますが、実行可能な回答がないようです。バックグラウンドスレッドでリクエストを実行するRetrofit 2.1.0非同期コールバックを使用しています。しかし、応答がonResponseで受信されると、新しいスレッド内にコールバックを置いてもUIのスレッドを使用せずにアプリケーションのUIスレッドに返されます。Retrofit 2バックグラウンドスレッドのコールバックonResponse

何らかの理由でメインのUIスレッドをブロックしたくないので、バックグラウンドで応答を返すことは可能でしょうか?

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

ご協力いただければ幸いです。ありがとう!

答えて

12

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

Retrofit retrofit = new Retrofit.Builder() 
     .baseUrl(/* your url */) 
     .callbackExecutor(Executors.newSingleThreadExecutor()) 
     // other builder options... 
     .build(); 
関連する問題