例:
OkHttp 是为了完成网络请求的一个需求
Glide 是为了完成图片加载显示的一个需求
RxJava 不能完成任何的需求他是为了转变编码思维,响应式流编程思维
改变思维有什么用呢?请往下看!!!!!!!
1.为什么要用Rxjava
传统方式编写代码
A.程序员(小明)编写方式
B.程序员(小杨)编写方式
3.了解RxJava响应式流编程思维
所有的需求都会有起点和终点
例如1://起点(点击事件)---->图片地址---->请求服务器---->下载图片---->压缩图片---->给图片添加水印---->更新UI---->显示图片(终点结束)
private void rxjavaDownloadImg(View view) {
//起点(点击事件)---->图片地址---->请求服务器---->下载图片---->压缩图片---->给图片添加水印---->更新UI---->显示图片(终点结束)
Observable.just(PATH)//事件源 String类型 第二步
.map(new Function<String, Bitmap>() {
@Override
public Bitmap apply(String s) throws Exception { //第三步
//例:请求服务器下载图片
Bitmap bitmap = null;
return bitmap;//return到下一个线程
}})
/* .map(new Function<Bitmap, Bitmap>() { 开发完成后,此功能不再需要时,直接注释即可
@Override
public Bitmap apply(Bitmap bitmap) throws Exception {//第四步
//例:压缩图片
return bitmap;//return到下一个线程
}})*/
.map(new Function<Bitmap, Bitmap>() {
@Override
public Bitmap apply(Bitmap bitmap) throws Exception {//第五步
//例:给图片添加水印
return bitmap;//return到下一个线程
}})
//线程调度
.subscribeOn(Schedulers.io()) //上游分配异步线程,处理耗时操作 Schedulers.io()
//------------------------------上游下游分割-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
.observeOn(AndroidSchedulers.mainThread()) //下游为Android主线程
.subscribe(new Observer<Bitmap>() { //订阅 起点和终点关联起来
@Override
public void onSubscribe(Disposable d) {//第一步
//点击时最先执行该方法
showLoadingDialog("图片加载中...", false);
}
@Override
public void onNext(Bitmap bitmap) {//第六步
//例:显示图片
//例:更新UI
}
@Override
public void onError(Throwable e) {//异常,直接结束
}
@Override
public void onComplete() {//结束最终点 第七步
closeLoadingDialog();//对话窗结束
}
});
}

4.Rxjava优缺点
优点:改善思维,效率提升,思路整洁
改善我们的编程思维方式,让我们编写代码更加高效,能够梳理我们的流程,更加清晰
缺点:代码不整洁,线程没控制好容易导致内存泄露