RxJava

来源:扔物线的文章 https://gank.io/post/560e15be2dca930e00da1083

1.同步观察者模式:

int drawableRes = ...;

ImageView imageView = ...;

Observable.create(new OnSubscribe<Drawable>() {

    @Override

    public void call(Subscriber<? super Drawable> subscriber) {

        Drawable drawable = getTheme().getDrawable(drawableRes));

        subscriber.onNext(drawable);

        subscriber.onCompleted();

    }

}).subscribe(new Observer<Drawable>() {

    @Override

    public void onNext(Drawable drawable) {

        imageView.setImageDrawable(drawable);

    }

    @Override

    public void onCompleted() {

    }

    @Override

    public void onError(Throwable e) {

        Toast.makeText(activity, "Error", Toast.LENGTH_SHORT).show();

    }

});

2.schedule切换线程实现异步

int drawableRes = ...;

ImageView imageView = ...;

Observable.create(new OnSubscribe<Drawable>() {

    @Override

    public void call(Subscriber<? super Drawable> subscriber) {

        Drawable drawable = getTheme().getDrawable(drawableRes));

        subscriber.onNext(drawable);

        subscriber.onCompleted();

    }

})

.subscribeOn(Schedulers.io()) // 指定 subscribe() 发生在 IO 线程

.observeOn(AndroidSchedulers.mainThread()) // 指定 Subscriber 的回调发生在主线程

.subscribe(new Observer<Drawable>() {

    @Override

    public void onNext(Drawable drawable) {

        imageView.setImageDrawable(drawable);

    }

    @Override

    public void onCompleted() {

    }

    @Override

    public void onError(Throwable e) {

        Toast.makeText(activity, "Error!", Toast.LENGTH_SHORT).show();

    }

});

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。