zoukankan      html  css  js  c++  java
  • 知识树杂谈(2)

    一、RxJava理论学习

         a. 参考文章

           http://gank.io/post/560e15be2dca930e00da1083#toc_28

            http://gank.io/post/560e15be2dca930e00da1083

         b. 含义

             a library for composing asynchronous and event-based programs by using observable sequences. 一个在Java VM上使用可观测的序列来组成异步的、基于事件的程序的库。  

            特性:   扩展的观察者模式、异步(线程控制)、变换(类型转换)。

         c. 简单例子

             通过一个url加载一张图,恩为了演示RxJava和线程控制,我用HttpUrlConnection来做一个实例。

             

    Observable.create(new Observable.OnSubscribe<Bitmap>() {
                @Override
                public void call(Subscriber<? super Bitmap> subscriber) {
                    try {
                        URL url = new URL("http://img4.imgtn.bdimg.com/it/u=815679381,647288773&fm=21&gp=0.jpg");
                        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                        connection.setRequestMethod("GET");
                        connection.setConnectTimeout(8000);
                        connection.setReadTimeout(8000);
    
                        InputStream in = connection.getInputStream();
                        Bitmap bitmap = BitmapFactory.decodeStream(in);
                        subscriber.onNext(bitmap);
                    } catch (MalformedURLException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
    
                }
            })
                    .observeOn(AndroidSchedulers.mainThread())  //指定subscriber的回调发生在UI线程
                    .subscribeOn(Schedulers.newThread())        //指定subscribe()发生在新线程
                    .subscribe(new Subscriber<Bitmap>() {
                        @Override
                        public void onCompleted() {
                            plan.setVisibility(View.GONE);
                        }
    
                        @Override
                        public void onError(Throwable e) {
                            e.printStackTrace();
                        }
    
                        @Override
                        public void onNext(Bitmap bitmap) {
                            if (bitmap != null) {
                                image.setImageBitmap(bitmap);
                                onCompleted();
                            }
                        }
                    });
        }
    齊帥
  • 相关阅读:
    MYSQL: 什么是MYSQLD Service
    100 logging模块
    099 hashlib和hmac模块
    098 json和pickle模块
    097 sys模块
    096 os模块
    095 random模块
    094 datetime模块
    093 time模块
    092 模块基础实战之ATM和购物车系统分文件处理
  • 原文地址:https://www.cnblogs.com/qishuai/p/7628678.html
Copyright © 2011-2022 走看看