Even miracle take a moment
Do what feels right to you
安卓开发功能
1 | AlbumMainActivity(专辑主页面),首先初始化页面,获取AlbumList,得到专辑id,onActivityResult用于页面传值。onResume和onPause调用友盟。 |
1 | // NetHelper 解析,创建单例,用于调用,初始化检查设备在线的状态,如果是wifi,开始局域网扫描,扫描先shotdownNow(),然后通过广播地址(255.255.255.255),通过定时执行0秒延时,隔3秒,执行线程池中执行发送信号(也就是url,DEVICE_DISCOVERY = "/discovery?param=xiaotingting&port=255.255.255.255";)线程执行sendBroadcast(数据,ip),通过DatagramPacket(就像通信的船),(DatagramSocket是两个港口),其中DatagramPacket会使用四个参数,字节,长度,广播地址(255...),端口号 |
1 | //高斯模糊 |
登陆接口采用jbush,采用rustful接口方式,对接后台比较方便,
绑定订阅到rxjava
rxjava的原理,被观察者产生一系列的事件,通过订阅者传递给观察者,观察者通过一些列的事件作出响应的模式(特点:链式调用)
Rxjava 的优雅实现
1 | Observable.create(new ObservableOnSubscribe |

1 | new Observer |

Rxjava创建操作符
Rxjava 快速创建observablejust()
快速创建,最多发送10个参数
1 | Observable.just(3,1,2,4).subscribe(new Observer |
fromArray()
快速创建一个被观察者对象,发送10个以上事件数组形式
1 | Integer[] items = {0,1,2,3,4}; |
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
创建请求接口
1 | public interface GetRequest_Interface { |
1 |
|
1 |
|
1 |
|
原理:一次接收3个事件,并且步长为一,所以每次指针向后移动一个。
1 | //组合多个观察者 |
1 |
|
Zip()合并多个事件

组合方式严格按照原先事件序列,进行对位合并,最终合并的事件数量等于多个被观察者中数量最少的数量。
在rxjava3中,不会发送没有合并的事件。
1 | Observable.zip(Observable.create(new ObservableOnSubscribe |
1 |
|
1 | collect() //事件收集到一个数据结构中 |
常见的合并/组合操作符
例:获取数据,若缓存中有则取缓存,否则取磁盘,否则在请求网络获取数据。
1 | String memoryCache = null; |
网络获取多个数据进行合并输出
1 | // 创建retrofit |
利用conbineLatest()
进行空值判断:
1 | /* |
Rxjava 线程工作原理
类型 | 含义 | 应用 |
---|---|---|
Schedulers.immediate() | 当前线程=不指定线程 | 默认 |
AndroidSchedulers.mainThread() | Android主线程 | main |
Schedulers.newThread() | 常规新线程 | 耗时的操作 |
Schedulers.io() | io操作线程 | 网络请求,读写文件等io密集型操作 |
Schedulers.compution() | cpu计算线程 | 大量计算 |
使用:
1 | Observable.subscribeOn()指定 |
1 | // 1. 整体方法调用顺序:观察者.onSubscribe()> 被观察者.subscribe()> 观察者.doOnNext()>观察者.onNext()>观察者.onComplete() |