Android两种轮询的实现方法
Android 两种轮询的简单写法,供大家参考,具体内容如下
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的生命周期里分别调用start和stop方法,解除轮询绑定,避免内存泄漏。
其它简单的轮询方法还有利用handler的postDelay机制实现
@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);}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持好吧啦网。
相关文章:
1. Python中的min及返回最小值索引的操作2. Android如何用自定义View实现雪花效果3. Java之JSP教程九大内置对象详解(下篇)4. Python操作MongoDb数据库流程详解5. Python+Appium实现自动抢微信红包6. js中textContent、innerText和innerHTML的用法以及区别7. springboot使用CommandLineRunner解决项目启动时初始化资源的操作8. Python常用base64 md5 aes des crc32加密解密方法汇总9. SpringBoot框架打包体积简化过程图解10. Vue中强制组件重新渲染的正确方法

网公网安备