Android两种轮询的实现方法
时间:2022-07-26
本文章向大家介绍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 () {
@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的生命周期里分别调用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);
}
以上就是本文的全部内容,希望对大家的学习有所帮助。
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 重磅!GitHub 推出容器镜像仓库服务!
- 深入理解 Cilium 的 eBPF 收发包路径
- CentOS7下搭建Jellyfin个人流媒体服务器
- CentOS8下yum源配置及nmcli命令简单介绍
- Day62:二叉搜索树的第k个结点
- CentOS7下利用SRS搭建直播流媒体服务器
- 第9天:NLP补充——需要的基本知识
- 6.AVCodecContext和AVCodec
- WebAssembly之使用JS调用C/C++接口
- WebAssembly之emcc编译命令
- 食堂店小二儿教你学会栈
- Istio流量管理实现机制深度解析-基于1.4.0更新
- Istio 运维实战系列(1):应用容器对 Envoy Sidecar 的启动依赖问题
- R语言基于Reactome数据库的富集分析
- WiredTiger存储引擎之五:与事务相关的数据结构以及并发控制机制