RxJava

作者: kinglong1984 | 来源:发表于2018-10-25 12:06 被阅读6次

来源:扔物线的文章 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();

    }

});

相关文章

网友评论

      本文标题:RxJava

      本文链接:https://www.haomeiwen.com/subject/psvqtqtx.html