নেটওয়ার্ক অনুরোধগুলি অবিচ্ছিন্নভাবে পরিচালনা করতে আমি আমার অ্যান্ড্রয়েড অ্যাপে rxjava ব্যবহার করছি। এখন আমি একটি নির্দিষ্ট সময় কেটে যাওয়ার পরে ব্যর্থ নেটওয়ার্কের অনুরোধটি আবার চেষ্টা করতে চাই।
পর্যবেক্ষণে পুনরায় চেষ্টা () ব্যবহার করার কি কোনও উপায় আছে তবে কেবলমাত্র একটি নির্দিষ্ট বিলম্বের পরে আবার চেষ্টা করার?
বর্তমানে পর্যালোচনা করা হচ্ছে (পর্যবেক্ষণের বিপরীতে প্রথমবার চেষ্টা করা হচ্ছে) পর্যবেক্ষণযোগ্যদের জানার কোনও উপায় আছে কি?
আমার ডাবনো () / থ্রোটলউইথটাইমআউট () এ নজর ছিল তবে তারা মনে হয় কিছু আলাদা করছে।
সম্পাদনা করুন:
আমি মনে করি এটি করার একটি উপায় আমি খুঁজে পেয়েছি তবে আমি এটি নিশ্চিত করার আগ্রহী যে এটি করা সঠিক উপায় বা অন্যান্য, আরও ভাল উপায়।
আমি যা করছি তা হ'ল: আমার অবজারভেবলের কল () পদ্ধতিতে nঅনশস্ক্রাইব করুন, সাবস্ক্রাইবারদের অনার () পদ্ধতিতে কল করার আগে আমি কেবলমাত্র পছন্দসই সময়ের জন্য থ্রেডকে ঘুমিয়ে যাই। সুতরাং, প্রতি 1000 মিলিসেকেন্ডে আবার চেষ্টা করার জন্য, আমি এই জাতীয় কিছু করি:
@Override
public void call(Subscriber<? super List<ProductNode>> subscriber) {
try {
Log.d(TAG, "trying to load all products with pid: " + pid);
subscriber.onNext(productClient.getProductNodesForParentId(pid));
subscriber.onCompleted();
} catch (Exception e) {
try {
Thread.sleep(1000);
} catch (InterruptedException e1) {
e.printStackTrace();
}
subscriber.onError(e);
}
}
যেহেতু এই পদ্ধতিটি আইও থ্রেডে চলছে তাই এটি ইউআইকে অবরুদ্ধ করে না। আমি দেখতে পাচ্ছি কেবলমাত্র সমস্যাটি হ'ল এমনকি প্রথম ত্রুটিটি বিলম্বের সাথে রিপোর্ট করা হয়েছে যাতে পুনরায় চেষ্টা না করা হলেও দেরি রয়েছে) আমি আরও ভাল চাই যদি বিলম্বটি ত্রুটির পরে প্রয়োগ না করা হয় তবে পরিবর্তে পুনরায় চেষ্টা করার আগে (তবে প্রথম চেষ্টা করার আগে নয়, স্পষ্টতই)।
Error:(73, 20) error: incompatible types: RetryWithDelay cannot be converted to Func1<? super Observable<? extends Throwable>,? extends Observable<?>>