Bir Android cihazından arka uçta yüklemek istediğim dosyaların bir listesini hazırladım. Bellek kısıtlamaları nedeniyle, ikinci API çağrısı sadece ilk bittikten sonra, ikincisinin bittikten sonra üçüncü olmasını istiyorum. RxJava ve Retrofit kullanarak N ardışık api aramaları yapma
Benprivate Observable<Integer> uploadFiles(List<File> files) {
return Observable.create(subscriber -> {
for (int i = 0, size = files.size(); i < size; i++) {
UploadModel uploadModel = new UploadModel(files.get(0));
int uploadResult = retrofitApi.uploadSynchronously(uploadModel);
subscriber.onNext(uploadResult);
}
subscriber.onCompleted();
}).subscribeOn(Schedulers.newThread());
}
gibi bir şey yazdım Ama bu Rx ruhuna aykırı çıkabilirimama gibi hissediyorum ve sen Observable.create kullanıyorsanız deyişi, muhtemelen yanlış yapıyoruz olduğunu. .. Bu makul bir yaklaşım mı? Bunu, Retrofit'in RxJava entegrasyonu ile başarmanın daha iyi bir yolu var mı?
Neden API arayüzünüzde 'uploadSynchronously' ** tanımlanamıyor ** return Gözlenebilir mi? Diğer bir yol, gözlemlenebilir her birinde blokaj kullanmaktır. – marwinXXII
Yaptığım şey buydu - retrofitApi.uploadSynchronousSynchronous bir gözlemlenebilir değil, int döndüren bir retrofit çağrı engelliyor. Ve eğer sorunun cevabı Rx olmadan basit bir döngü yapmamış olsaydı, hatalar ve UI ilerleme güncellemelerini zarif bir şekilde ele almak zor olurdu, ayrıca bu Gözlemlenebilir zincirden önceki ve sonraki bazı ek adımlar var. –
Aslında, hayır, bana göre 'map' kullanılarak temel döngü tercih edilir. – marwinXXII