RxJava ile bir Android uygulaması yapıyorum, sayfanın birinde, bir düğmeye bastığımda, basıldığında, sayfa yenilenecek. Ayrıca, kullanıcı o andaki düğmeye basmamışsa, her 10 saniyede bir otomatik yenilemeyi istiyorum. Ancak kullanıcı bu düğmeyi tıkladığında, otomatik yenileme eyleminin tıklamadan 10 saniye sonra gerçekleşmesini istiyorum. Kendi 10 saniyelik aralığına devam etmek yerine. Örneğin, ikinci 0'da, uygulama bir otomatik yenileme yapar, ardından ikinci 3'te kullanıcı düğmeye bastı. Daha sonra otomatik yenileme, ikinci 13, ikinci 23, vb. Olmalıdır. Belirli bir aralıkta öğeleri yayan bir interval()
işleci olduğunu biliyorum. Ama başlangıç zamanını sıfırlamak için bir yol yok gibi görünüyor. Bazı abonelikten çıkmak ve tekrar Gözlemlenebilir interval()
abone olabilir. "Ayırmanızı" intervalObservable
, o zaman onNext
bunu birleştirmeyi iptal edebilir ve yeniden birleştirmek için bir yolu varsa bir kod parçasıdırrxjava interval() bazı olaylardan sonra sıfırlama süresi
Observable<Long> intervalObservable = Observable.inteval(10, TimeUnit.SECONDS)
RxView.click(refreshButton).map(ignored -> 0L)
.merge(intervalObservable)
.subscibe(ignore -> performRefresh());
gibi olurdu. Ama öyle değil. Bunu nasıl başarabilirim?
Bu tam olarak istediğim şey! Teşekkür ederim! –
@ patrick-bacon, OP'in sadece bir tıklama olmaması durumunda yazdığı birleştirme işlemine hala ihtiyaç duyuyorsunuz, böylece aralık hala 10 dak. – vman
@vman - Düğmeye hiçbir zaman tıklanmamış olsa bile her 10 saniyede bir yenilenmesi gerektiğini anlamadım. Bu biraz daha karmaşık hale getirecek, ama yine de yapılabilir. Bunu destekleyen ikinci bir örneğim olması için cevabımı güncelleyip güncelleyemeyeceğimi göreceğim. İyi yakalama! –