前言

  • Rxjava,由于其基于事件流的链式调用、逻辑简洁 & 使用简单的特点,深受各大 Android开发者的欢迎。

如果还不了解RxJava,请看文章:Android:这是一篇 清晰 & 易懂的Rxjava 入门教程

  • RxJava如此受欢迎的原因,在于其提供了丰富 & 功能强大的操作符,几乎能完成所有的功能需求
  • 今天,我将为大家带来 Rxjava创建操作符的常见开发应用场景:联想搜索优化需求 ,并结合RetrofitRxJava 实现,希望大家会喜欢。
  1. 本系列文章主要基于 Rxjava 2.0
  2. 接下来的时间,我将持续推出 AndroidRxjava 2.0 的一系列文章,包括原理、操作符、应用场景、背压等等 ,有兴趣可以继续关注Carson_Ho的安卓开发笔记!!


目录


1. 需求场景


2. 功能说明

注:关于 Rxjava中的debuounce() 操作符的使用请看文章:Android RxJava:过滤操作符 全面讲解


3. 具体实现

  • 布局文件:activity_filter.xml
<?xml version="1.0" encoding="utf-8"?>// 用于输入搜索的字符    // 用于显示联想搜索的结果    
  • 主文件:FilterUsage.java
// 控件绑定        EditText ed;        TextView tv;        ed = (EditText) findViewById(R.id.ed);        tv = (TextView) findViewById(R.id.tv);                 /*         * 说明         * 1. 此处采用了RxBinding:RxTextView.textChanges(name) = 对对控件数据变更进行监听(功能类似TextWatcher),需要引入依赖:compile 'com.jakewharton.rxbinding2:rxbinding:2.0.0'         * 2. 传入EditText控件,输入字符时都会发送数据事件(此处不会马上发送,因为使用了debounce())         * 3. 采用skip(1)原因:跳过 第1次请求 = 初始输入框的空字符状态         **/        RxTextView.textChanges(ed)                .debounce(1, TimeUnit.SECONDS).skip(1)                .observeOn(AndroidSchedulers.mainThread())                .subscribe(new Observer() {                    @Override                    public void onSubscribe(Disposable d) {                    }                    @Override                    public void onNext(CharSequence charSequence) {                        tv.setText("发送给服务器的字符 = " + charSequence.toString());                    }                    @Override                    public void onError(Throwable e) {                        Log.d(TAG, "对Error事件作出响应" );                    }                    @Override                    public void onComplete() {                        Log.d(TAG, "对Complete事件作出响应");                    }                });
  • 测试结果


4. Demo地址

Carson_Ho的Github地址 = RxJava2实战系列:联想搜索优化


5. 总结

  • 本文主要讲解了 Rxjava的实际开发需求场景:联想搜索优化需求
  • 下面我将结合 实际场景应用 & Rxjava的相关使用框架(如RetrofitEventbus ,继续对 AndroidRxjava 的实际开发需求场景进行深入讲解 ,感兴趣的同学可以继续关注carson_ho的微信公众号


请帮顶 / 评论点赞!因为你的鼓励是我写作的最大动力!

相关文章阅读

  • 操作符使用
    Android:这是一篇 清晰 & 易懂的Rxjava 入门教程
    Android RxJava:最基础的操作符详解 - 创建操作符
    Android RxJava:图文详解 变换操作符
    Android RxJava:组合 / 合并操作符 详细教程
    Android RxJava:功能性操作符 全面讲解
  • 实际应用讲解
    Android RxJava 实际应用讲解:(无条件)网络请求轮询
    Android RxJava 实际应用讲解:(有条件)网络请求轮询
    Android RxJava 实际应用讲解:网络请求嵌套回调
    Android RxJava 实际应用讲解:合并数据源
    Android RxJava 实际应用讲解:从磁盘 / 内存缓存中 获取缓存数据
    Android RxJava 实际应用讲解:联合判断
    Android RxJava:细说 线程控制(切换 / 调度 )(含Retrofit实例讲解)
    Android RxJava 实际应用讲解:网络请求出错重连(结合Retrofit)

更多相关文章

  1. 高级Redis应用进阶课 一站式Redis解决方案
  2. Android(安卓)Activity生命周期和堆栈管理的详解
  3. Android(安卓)操作系统获取Root权限 原理详细解析
  4. (布局)Android(安卓)应用程序窗体显示状态操作(requestWindowFeatur
  5. adb shell 是什么,如何进入?
  6. Android中实现SQLite数据库CRUD操作的两种方式
  7. android sqlite批量插入数据速度解决方案
  8. Android(安卓)生成不同服务器配置,不同APPID的apk
  9. 一个大型新闻app的骨架(android)

随机推荐

  1. 自己在使用Android(安卓)Maps API 开发地
  2. 锦囊篇|一文摸懂ButterKnife
  3. 在Mac上完全删除android studio初始配置
  4. Android程序开发调试工具(一):dx和dexdump
  5. Android的语言设置-跟踪
  6. Android手机刷机知识小总结
  7. 举例说明android中Bitmap、ListView以及I
  8. Android GPS架构分析(三)
  9. Android(安卓)SQLite性能分析
  10. android修改SeekBar默认样式