美文网首页
2020-05-28-Android-RxJava

2020-05-28-Android-RxJava

作者: 耿望 | 来源:发表于2020-05-28 16:16 被阅读0次

观察者模式

下面写了一个简单例子,实现图片的异步加载。
首先实现一个Observer对象,用来接收数据,更新图片内容。
onNext方法接收一个Bitmap对象。

public class RxObserver implements Observer {

    private static final String TAG = "RxObserver";

    private ImageView imageView;

    public void setImageView(ImageView img) {
        imageView = img;
    }

    @Override
    public void onSubscribe(@NonNull Disposable d) {
        Log.d(TAG, "onSubscribe");
    }

    @Override
    public void onNext(Object o) {
        Log.d(TAG, "onNext " + o.toString());
        imageView.setImageBitmap((Bitmap) o);
    }

    @Override
    public void onError(@NonNull Throwable e) {
        Log.d(TAG, "onError " + e);
    }

    @Override
    public void onComplete() {
        Log.d(TAG, "onComplete");
    }
}

然后实现一个Observable对象,被观察者,用来提供数据。

    private static class RxObservable implements ObservableOnSubscribe {

        private Object data;

        public RxObservable(Object obj) {
            data = obj;
        }

        @Override
        public void subscribe(@NonNull ObservableEmitter emitter) throws Throwable {
            Log.d(TAG, "subscribe");
            emitter.onNext(data);
            emitter.onComplete();
        }
    }

最后通过subscribe方法,连接被观察者和观察者,传递数据。

    private void loadImg() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                InputStream is = null;
                try {
                    is = openFileInput("疯狂动物城.jpg");
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                }
                Bitmap bitmap = BitmapFactory.decodeStream(is);
                RxHelper.getObservable(bitmap).subscribe(observer);
            }
        }).start();
    }

参考

Android Rxjava:这是一篇 清晰 & 易懂的Rxjava 入门教程
GitHub地址
RxJava 多线程控制
Android RxJava:手把手教你使用RxJava
详解Android RxJava的使用

相关文章

  • 2020-05-28-Android-RxJava

    观察者模式 下面写了一个简单例子,实现图片的异步加载。首先实现一个Observer对象,用来接收数据,更新图片内容...

网友评论

      本文标题:2020-05-28-Android-RxJava

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