RxJava使用方法:
/**
* Rx 起点和终点
*
* RxJava RxJS Rxxxx 系列框架,所有的函数都称之为操作符,使得操作从起点 流向 终点
* */
// 起点
Observable.just(imgUrl)
// 需求:001图片下载
.map(new Function<String, Bitmap>() {
@Override
public Bitmap apply(String path) throws Exception {
Bitmap bitmap = null;
URL url = new URL(path);
URLConnection conn = url.openConnection();
conn.setReadTimeout(5000);// 设置超时链接5s
conn.setDoInput(true);
InputStream inputStream = conn.getInputStream();
bitmap = BitmapFactory.decodeStream(inputStream);
return bitmap;
}
})
// 给上面操作分配异步线程(图片下载操作)
.subscribeOn(Schedulers.io())
// 给终点分配Android主线程
.observeOn(AndroidSchedulers.mainThread())
// 关联:观察者设计模式 关联 起点 和 终点 == 订阅
.subscribe(
// 终点
new Observer<Bitmap>() {
// 订阅成功
@Override
public void onSubscribe(Disposable d) {
}
// 上一层给我的响应
@Override
public void onNext(Bitmap bitmap) {
image.setImageBitmap(bitmap);// 显示到控件上
}
// 链条发生了异常
@Override
public void onError(Throwable e) {
}
// 整个链条全部结束
@Override
public void onComplete() {
}
});
安卓高版本访问网络链接报错问题:
Android 默认使用加密连接,这意味着 Android P 将禁止 App 使用所有未加密的连接, 为解决报错问题。 因此运行 Android P 系统的安卓设备无论是接收或者发送流量,未来都不能明码传输,需要使用下一代(Transport Layer Security)传输层安全协议,而 Android Nougat 和 Oreo 则不受影响。 因此在Android P 使用HttpUrlConnection进行http请求会出现以下异常:
W/System.err: java.io.IOException: Cleartext HTTP traffic to **** not permitted
使用OKHttp请求则出现:
java.net.UnknownServiceException: CLEARTEXT communication ** not permitted by network security policy
解决方法
在AndroidManifest.xml文件下的application标签增加以下属性:
<application
...
android:usesCleartextTraffic="true"
...
/>