Retrofit2インタフェース:
を@FormUrlEncoded
@PUT("path")
Observable<String> putMethod(
@Field("field") String field,
...
);
Retrofit2ビルダー:
private NetRequestService() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(END_POINT)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
service = retrofit.create(RetrofitInterface.class);
}
要求:
public void putMethod(Context context, List<Object> objectList){
for(Object o: objectList) {
service.putMethod(
"field",
...
)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<String>() {
@Override
public final void onCompleted() {
}
@Override
public final void onError(Throwable e) {
Log.e("Error", e.getMessage());
}
@Override
public final void onNext(String response) {
Log.e("Response", response);
}
});
}
}
すべて問題なく動作していますが、onCompleted()メソッドが呼び出されるたびに問題が発生しますが、service.putMethod(...)の呼び出しが完了した時点を知りたいと思います。どうやってやるの?私はすべての呼び出しが別のアクションを実行するために行われたときに何らかのコールバックをしたいと思います。
おかげ
以下の答えは正しいですが、私はSchedulers.newThreadを使う前に2度考えるべきだと付け加えたいと思います。特別なスケジューラー 'io'を使用してください。その理由は、ioスケジューラーがスレッドプールを使用する場合、newThreadが各メソッド呼び出しの新しいスレッドを作成するからです。 – shagi