android用广播实现轮询,Android两种轮询的实现方法

Android 两种轮询的简单写法,供大家参考,具体内容如下

public void startPolling() {

subscriber = Observable.interval(0, POLLING_INTERVAL, TimeUnit.MILLISECONDS).

doOnNext(new Action1() {

@Override

public void call(Long aLong) {

doPolling().

subscribeOn(Schedulers.io()).

observeOn(AndroidSchedulers.mainThread()).

subscribe(new Subscriber() {

@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 doPolling() {

return Observable.create(new Observable.OnSubscribe() {

@Override

public void call(Subscriber super Param> subscriber) {

//do work

subscriber.onNext(response);

subscriber.onCompleted();

}

});

}

在Activity的生命周期里分别调用start和stop方法,解除轮询绑定,避免内存泄漏。

其它简单的轮询方法还有利用handler的postDelay机制实现

@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);

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值