1. 程式人生 > >Android中RxJava使用1----基本原理

Android中RxJava使用1----基本原理

簡單說就是:一個被觀察者,一個(或多個)觀察者,被觀察者給觀察者發訊息。 具體就是: 1)Observable:被觀察者(主題Subject) 2)Observer/Subscriber :觀察者 3)Subscribe:訂閱(就是被觀察者給觀察者發訊息) Observable 和 Observer 通過 subscribe() 方法實現訂閱關係 具體實現步驟 1、在build.gradle中新增依賴:

compile 'com.jakewharton.rxbinding:rxbinding:0.4.0'

這個依賴包中包含了 rxbinding-0.4.0 (操作控制元件) rxjava-1.1.0 (Java相關的) rxandroid-1.1.0 (安卓相關的) 在這裡插入圖片描述

2、具體程式碼:

package com.zhh.app;

import android.app.Activity;
import android.os.Bundle;

import com.orhanobut.logger.Logger;

import rx.Observable;
import rx.Observer;
import rx.Subscriber;

/**
 * 第一節
 * 基本使用
 * 1. Observable:被觀察者(主題Subject)
 * 2. Observer/Subscriber :觀察者
 * 3.Subscribe:訂閱(就是被觀察者給觀察者發訊息)
 * Observable 和 Observer 通過 subscribe() 方法實現訂閱關係
 */
public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
//      被觀察者
        Observable<String> observable = getObservable();
//      觀察者
        Observer<String> observer = getObserver();
//      訂閱,實現把資料從被觀察者,傳送到觀察者
//      通常,把被觀察者和觀察者放在不同的檔案裡,收發訊息
        observable.subscribe(observer);

    }
    /**
     * 被觀察者,發訊息
     */
    public Observable<String> getObservable() {
        Observable<String> observable = Observable.create(new Observable.OnSubscribe<String>() {
            @Override
            public void call(Subscriber<? super String> subscriber) {
                //              訊息是一條一條傳送的
                subscriber.onNext("我");
                subscriber.onNext("是");
                subscriber.onNext("翟");
                subscriber.onNext("浩浩");
                subscriber.onCompleted();
            }
        });
        return observable;
    }

    /**
     * 觀察者,接收訊息
     * @return
     */
    private Observer<String> getObserver() {
        Observer observer = new Observer<String>() {
            @Override
            public void onCompleted() {
//              完成
            }

            @Override
            public void onError(Throwable e) {
//               錯誤
            }

            @Override
            public void onNext(String value) {
//             接收訊息
//             訊息是一條一條接收的
                Logger.t("111").d(value);
//              打印出來的資料
//              我
//              是
//              翟
//              浩浩
            }
        };
        return observer;
    }


}

原始碼下載: