Android兩種輪詢的實(shí)現(xiàn)方法
Android 兩種輪詢的簡(jiǎn)單寫法,供大家參考,具體內(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>() {@Overridepublic void onCompleted() {}@Overridepublic void onError(Throwable e) { Log.d(TAG, 'onError');}@Overridepublic 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)存泄漏。
其它簡(jiǎn)單的輪詢方法還有利用handler的postDelay機(jī)制實(shí)現(xiàn)
@Overridepublic 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);}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. Springboot 跨域配置無(wú)效及接口訪問(wèn)報(bào)錯(cuò)的解決方法2. JSWDK的發(fā)布目錄的更改3. Java Bean 映射工具 Dozer 2.0 發(fā)布4. WebSocket使用以及在vue如何使用問(wèn)題5. 用js編寫留言板6. PHP設(shè)計(jì)模式之迭代器模式淺析7. Android實(shí)現(xiàn)下載進(jìn)度條效果8. python argparse模塊通過(guò)后臺(tái)傳遞參數(shù)實(shí)例9. python matplotlib模塊基本圖形繪制方法小結(jié)【直線,曲線,直方圖,餅圖等】10. php字符串函數(shù) str類常見(jiàn)用法示例
