मुझे आश्चर्य है कि कोई जवाब नहीं है जो RxJava2 के साथ समाधान का उल्लेख करेगा । यह वास्तव में सरल है और एंड्रॉइड में टाइमर सेटअप करने का एक आसान तरीका प्रदान करता है।
पहले आपको ग्रेडल निर्भरता की स्थापना करने की आवश्यकता है, अगर आपने ऐसा पहले से नहीं किया है:
implementation "io.reactivex.rxjava2:rxjava:2.x.y"
(की जगह x
और y
साथ वर्तमान संस्करण संख्या )
चूँकि हमारे पास सिर्फ एक सरल, गैर-दोहराव वाला काम है , हम Completable
वस्तु का उपयोग कर सकते हैं :
Completable.timer(2, TimeUnit.SECONDS, Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(() -> {
// Timer finished, do something...
});
दोहराए जाने के लिए , आप Observable
एक समान तरीके से उपयोग कर सकते हैं :
Observable.interval(2, TimeUnit.SECONDS, Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(tick -> {
// called every 2 seconds, do something...
}, throwable -> {
// handle error
});
Schedulers.computation()
यह सुनिश्चित करता है कि हमारा टाइमर बैकग्राउंड थ्रेड पर चल रहा है और .observeOn(AndroidSchedulers.mainThread())
कोड का मतलब है कि हम टाइमर खत्म होने के बाद रन करेंगे।
अवांछित स्मृति लीक से बचने के लिए, आपको गतिविधि / फ़्रैगमेंट नष्ट होने पर सदस्यता समाप्त करना सुनिश्चित करना चाहिए।