Android兩種輪詢的實現(xiàn)方法
Android 兩種輪詢的簡單寫法,供大家參考,具體內(nèi)容如下
public void startPolling() { subscriber = Observable.interval(0, POLLING_INTERVAL, TimeUnit.MILLISECONDS). doOnNext(new Action1<Long>() { @Override public void call(Long aLong) { doPolling(). subscribeOn(Schedulers.io()). observeOn(AndroidSchedulers.mainThread()). subscribe(new Subscriber<String>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { Log.d(TAG, "onError"); } @Override public void onNext(String response) { handleResponse(response); } }); } }).subscribe(); } public void stopPolling() { if (!subscriber.isUnsubscribed()) { subscriber.unsubscribe(); } } private Observable<Param> doPolling() { return Observable.create(new Observable.OnSubscribe<Param>() { @Override public void call(Subscriber<? super Param> subscriber) { //do work subscriber.onNext(response); subscriber.onCompleted(); } }); }
在Activity的生命周期里分別調(diào)用start和stop方法,解除輪詢綁定,避免內(nèi)存泄漏。
其它簡單的輪詢方法還有利用handler的postDelay機制實現(xiàn)
@Override public void handleMsg(Message msg) { switch (msg.what) { case MSG_POLLING: doPolling(false); break; ... ... } } private void doPolling(Boolean isFirst) { if(isFirst) { mHandler.removeMessages(MSG_POLLING); mHandler.sendEmptyMessageDelayed(MSG_POLLING, POLLING_INTERVAL); return; } doWork(); //asyn network mHandler.sendEmptyMessageDelayed(MSG_POLLING, POLLING_INTERVAL); }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android?Jetpack結(jié)構(gòu)運用Compose實現(xiàn)微博長按點贊彩虹效果
Compose在動畫方面下足了功夫,提供了豐富的API。但也正由于API種類繁多,如果想一氣兒學(xué)下來,最終可能會消化不良,導(dǎo)致似懂非懂。結(jié)合例子學(xué)習(xí)是一個不錯的方法,本文就帶大家邊學(xué)邊做,通過實現(xiàn)一個微博長按點贊的動畫效果,學(xué)習(xí)了解Compose動畫的常見思路和開發(fā)技巧2022-07-07Android CountDownTimer實現(xiàn)倒計時器
這篇文章主要為大家詳細(xì)介紹了Android CountDownTimer實現(xiàn)倒計時效果的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-02-02Android Fragment實現(xiàn)列表和內(nèi)容聯(lián)動
這篇文章主要為大家詳細(xì)介紹了Android Fragment實現(xiàn)列表和內(nèi)容聯(lián)動效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-01-01Android開發(fā)導(dǎo)入項目報錯Ignoring InnerClasses attribute for an anonym
今天小編就為大家分享一篇關(guān)于Android開發(fā)導(dǎo)入項目報錯Ignoring InnerClasses attribute for an anonymous inner class的解決辦法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12Android中butterknife的使用與自動化查找組件插件詳解
這篇文章主要給大家介紹了關(guān)于Android中butterknife的使用與自動化查找組件插件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10Android Jetpack導(dǎo)航組件Navigation創(chuàng)建使用詳解
這篇文章主要為大家介紹了Android Jetpack導(dǎo)航組件Navigation創(chuàng)建及使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11