RxJava1.0详细介绍

RXjava是什么?

异步,一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库

RXjava好在哪儿?

简洁,异步操作很关键的一点是程序的简洁性,因为在调度过程比较复杂的情况下,异步代码经常会既难写也难被读懂。 Android 创造的 AsyncTaskHandler ,其实都是为了让异步代码更加简洁。RxJava 的优势也是简洁,但它的简洁的与众不同之处在于,随着程序逻辑变得越来越复杂,它依然能够保持简洁。

对于rxjava做出一个简单的栗子:

例如张三(观察者)想看某款新闻软件的科技信息(被观察者),由于科技信息是每天推送或者不定时推送,如果张三一直盯着手机屏幕看并且刷新消息是不是又新的信息,显然不现实。这时候就可以通过张三 subscribe(订阅)科技信息,而实现当有新的科技信息时自动给张三推送消息,在这期间,张三并不需要一直盯着屏幕刷新闻。在我们平时的认知中实现订阅应该是张三.subscribe(科技新闻),不过在RxJava代码中实现订阅应该写成科技新闻.subscribe(张三)。

这个功能的入门还是比较难懂的。但是代码确实做到了简洁明了,很有逻辑性,本人也是今天刚对此进行了简单的练习,对概念性的东西还是似懂非懂的样子,很朦胧。但我体会到他的奇妙之处在哪儿,今天我在工作中简单运用了Retrfit+rxjava的结合运用。了解不是很多,只是做出今天对新知识点的一个总结

启蒙网址:http://gank.io/post/560e15be2dca930e00da1083#toc_1    很详细的讲解了rxjava。接下来本人展示一下今天对retrfit+rxjava的成果吧。偷笑

//首先就是依赖

compile 'com.squareup.retrofit2:retrofit:2.0.1'
compile 'com.google.code.gson:gson:2.8.0'
compile 'com.squareup.retrofit2:converter-gson:2.0.1'
compile 'com.squareup.retrofit2:adapter-rxjava:2.0.1'
compile 'io.reactivex:rxandroid:1.1.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
//开始进入代码吧。

//retrfit的接口进行封装方便调用,请求方式是注解的方式。单纯的retrfit是返回Call
接口地址需要拼接就拼接,不需要直接不管就可以,retrfit+rxjava就需要返回observabl
e(被观察者)url地址以“/”结尾
public interface Retrfit_server  {
    public static  final  String BASE_PATH = "http://service.meiyinkeqiu.com/service/";
    public static final String BASE_URL="https://api.github.com/";
    @GET("ads/cptj")
   Observable<GuangGaoBean> DownGet();
    @GET("users/{user}")
    Observable<Baidu> downget(@Path("user")String user);
}
//创建Retrfit对象。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Retrofit retrofit=new Retrofit.Builder()
                .baseUrl(Retrfit_server.BASE_URL)
                //增加返回值为Gson的支持(以实体类返回)
                .addConverterFactory(GsonConverterFactory.create())
                //增加返回值为Oservable<T>的支持
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .build();
        //这里采用的是Java的动态代理模式
        Retrfit_server server = retrofit.create(Retrfit_server.class);
        //传入我们请求的键值对的值
        Observable<Baidu> observable = server.downget("baiiu");
        //创建Observer
        observable.subscribeOn(Schedulers.io())//指定线程io线程 做耗时操作 把耗时的网络请求放在子线程(io线程)
                //主线程更新 观察到结果后,把处理结果放在ui主线程
                .observeOn(AndroidSchedulers.mainThread())
                .flatMap(new Func1<Baidu, Observable<Baidu>>() {
                    @Override
                    public Observable<Baidu> call(Baidu baidu) {
                        return Observable.just(baidu);
                    }
                })
                .subscribe(new Observer<Baidu>() {
                    @Override
                    public void onCompleted() {
                    }
                    @Override
                    public void onError(Throwable e) {
                    }

                    @Override
                    public void onNext(Baidu baidu) {
                        Log.i("1111",baidu.toString());
                    }
                });
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值