RxAndroid 学习笔记(一) 初次了解
来源:互联网 发布:淘宝买组装机 编辑:程序博客网 时间:2024/06/01 10:19
RxJava最核心的两个东西是Observables(被观察者,事件源)和Subscribers(订阅者)。Observables发出一系列事件,Subscribers处理这些事件。这里的事件可以是任何你感兴趣的东西,触摸事件,web接口调用返回的数据等等。android下也有RxAndroid,不过这个东西由于鄙人经验优先 ,运用的不好,还需多多撸代码
关于RxAndroid的github:https://github.com/ReactiveX/RxAndroid。
新建emRxAndroidStudy工程, 然后在build.grade的dependencies里添加:
- compile 'io.reactivex:rxandroid:1.1.0'
- compile 'io.reactivex:rxjava:1.1.0'
接着我们来试下RxAndroid了, 首先这里我们还是使用上次的注解的方式,把4个和Annotation相关的文件拷贝到工程,编写MainActivity代码如下:
- package com.jared.emrxandroidstudy;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.View;
- import android.widget.Button;
- import android.widget.TextView;
- import rx.Observable;
- import rx.Subscriber;
- @EMLayoutBinder(R.layout.activity_main)
- public class MainActivity extends BaseActivity {
- private static final String TAG = "MainActivity";
- private Subscriber<String> subscriber;
- private Observable<String> observable;
- @EMViewBinder(R.id.hello)
- private TextView mHello;
- @EMViewBinder(R.id.test1)
- private Button mTest1;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- createSubscriber();
- }
- private void bindSubscriber() {
- observable.subscribe(subscriber);
- }
- private void createSubscriber() {
- subscriber = new Subscriber<String>() {
- @Override
- public void onCompleted() {
- Log.d(TAG, "onCompleted");
- }
- @Override
- public void onError(Throwable e) {
- e.printStackTrace();
- }
- @Override
- public void onNext(String t) {
- Log.d(TAG, "onNext");
- mHello.setText(t);
- }
- };
- }
- private String getHello() {
- return "Hello RxAndroid";
- }
- private String getHello1() {
- return "Hello RxAndroid 1";
- }
- @EMOnClickBinder({R.id.test1})
- public void myOnClick(View view) {
- switch (view.getId()) {
- case R.id.test1:
- createObservable();
- break;
- default:
- break;
- }
- }
- private void createObservable() {
- Log.d(TAG, "observable");
- observable = Observable.create(new Observable.OnSubscribe<String>() {
- @Override
- public void call(Subscriber<? super String> subscriber) {
- subscriber.onNext(getHello());
- subscriber.onCompleted();
- }
- });
- bindSubscriber();
- }
- }
布局文件如下:
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- tools:context="com.jared.emrxandroidstudy.MainActivity">
- <TextView
- android:id="@+id/hello"
- android:text="Hello World!"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content" />
- <Button
- android:id="@+id/test1"
- android:text="Test"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:textAllCaps="false"/>
- </LinearLayout>
这里创建了Observable,用来发送一字符串,然后创建了Subscriber,用来接收事件处理,然后把这两个绑定,按下按钮后,subscriber会调用onNext方法和onCompleted方法。
当然这里的createObservable可以通过just方法简化:
- private void createObservableByJust() {
- Log.d(TAG, "createObservable");
- observable = Observable.just(getHello());
- bindSubscriber();
- }
- private void createSubscriberByAction() {
- onNextAction = new Action1<String>() {
- @Override
- public void call(String s) {
- mHello.setText(s);
- }
- };
- }
这里通过Action1来实现,完全没有了subscriber了的感觉,接着修改绑定如下:
- private void bindSubscriber() {
- //observable.subscribe(subscriber);
- observable.subscribe(onNextAction);
- }
好了,接着我们来使用下操作符map,修改如下:
- private void createObservableByMap() {
- Log.d(TAG, "createObservableByMap");
- Observable.just(getHello()).map(new Func1<String, String>() {
- @Override
- public String call(String s) {
- return s + " by eastmoon";
- }
- }).subscribe(onNextAction);
- }
运行结果后原来字符串加上了by eastmoon了。其实map的功能就是在observable和subscribe之间可以对数据进行操作。
0 0
- RxAndroid 学习笔记(一) 初次了解
- RxAndroid学习笔记(一)
- RxAndroid学习笔记<一>
- MVP (一) 初次了解,什么是MVP
- RxJava(RxAndroid)(一)(笔记)
- rxAndroid 学习一
- rxAndroid学习笔记
- RxAndroid Rxjava学习笔记
- RXANDROID学习笔记
- RXANDROID学习笔记
- Hibernate学习笔记(一)了解Hibernate
- RxAndroid介绍(一)
- 了解Boilerplate - 学习笔记 一
- 学习Kotlin 初次尝试(一)
- 韩语学习笔记(2)初次会面
- Git 初次学习笔记
- RxAndroid热身系列(一)
- RxJava 和 RxAndroid (一)
- kafka connector commit 失败
- JAVA调用BAPI创建销售订单
- redis - 环境搭建
- json格式数据转化成map中key和values的样式
- 《深入浅出嵌入式底层软件开发》
- RxAndroid 学习笔记(一) 初次了解
- MongoDB 数据备份 mongodump 和数据恢复mongorestore
- HTML5 开发者需要了解的技巧和工具汇总
- 简易版的Imageloader
- mysql索引总结----mysql 索引类型以及创建
- 去掉WebView中的白色背景
- 在php中定义常量时,const与define的区别
- Linux下JDK、Tomcat的安装及配置
- 用 Python 排序数据的多种方法