RxJava源码阅读,线程切换(三)

244 阅读1分钟

1.基本用法

Observable.just("https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2019/5/17/16ac4f7f486ca77a~tplv-t2oaga2asx-image.image")
    .map(new Function<String, Bitmap>() { 
        @Override
        public Bitmap apply(@NonNull String urlPath) throws Exception {
            URL url = new URL(urlPath);
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            InputStream inputStream = urlConnection.getInputStream();
            Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
            return bitmap;
        }
    })
    .subscribeOn(Schedulers.io())
    .observerOn(Schedulers.mainThread())
    .subscribe(new Consumer<Bitmap>() {
        @Override
        public void onNext(Bitmap bitmap) {
            mImage.setImageBitmap(bitmap);
        }
    });

RxJava源码阅读(一)RxJava源码阅读,map操作符(二)中有讲到,Observable.just()创建了一个ObservableJust实例,map操作符后将ObservableJust封装为ObservableMap。不过subscribeOn方法中指定了上游事件在子线程中进行,observerOn方法指定了最后一步回调在主线程中进行

2.总结