RxJava用法簡單整理(Android)

對Android的RxJava用法的初步整理。針對事件序列的處理和再發(fā)送

compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'io.reactivex.rxjava2:rxjava:2.1.2'

1.map (數(shù)據(jù)類型轉換 如:int -> String)

2.flatMap 重新返回一個 Observable.fromArray(arry)

1.map (數(shù)據(jù)類型轉換 如:int -> String)

package com.archie.arrangeandroid;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

import io.reactivex.Observable;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Function;
import io.reactivex.schedulers.Schedulers;


public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";
    Integer[] integers = {1, 2, 3, 4, 5};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Observable.fromArray(integers)
                .map(new Function<Integer, String>() {
                    /*map 數(shù)據(jù)類型轉換 如:int -> String*/
                    @Override
                    public String apply(@NonNull Integer s) throws Exception {
                        Log.i(TAG, "apply: " + s);
                        return "map: " + s;
                    }
                })
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<String>() {
                    @Override
                    public void onSubscribe(@NonNull Disposable d) {
                        Log.i(TAG, "onSubscribe: " + "綁定前的操作");
                    }

                    @Override
                    public void onNext(@NonNull String student) {
                        Log.i(TAG, "onNext: " + student);
                    }

                    @Override
                    public void onError(@NonNull Throwable e) {
                        Log.i(TAG, "onError: " + "出現(xiàn)錯誤");
                    }

                    @Override
                    public void onComplete() {
                        Log.i(TAG, "onComplete: " + "已結束");
                    }

                });
    }
}


1) 輸出如下

3A(ZXSM2RXQIFF0A_CP16WE.png

2. flatMap 重新返回一個 Observable.fromArray(arry)

需要二次請求數(shù)據(jù)的時候可用到

package com.archie.arrangeandroid;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

import io.reactivex.Observable;
import io.reactivex.ObservableSource;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Function;
import io.reactivex.schedulers.Schedulers;


public class MainActivity extends AppCompatActivity {
    class Student {
        String name;

        public Student(String name) {
            this.name = name;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }

    private static final String TAG = "MainActivity";
    String[] strings = {"one", "two", "three", "four", "five"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Observable.fromArray(strings)
                .flatMap(new Function<String, ObservableSource<Student>>() {
                    /*flatMap 重新返回一個Observable*/
                    @Override
                    public ObservableSource<Student> apply(@NonNull String s) throws Exception {
                        Student student = new Student(s);
                        return Observable.fromArray(student);
                    }
                })
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<Student>() {
                    @Override
                    public void onSubscribe(@NonNull Disposable d) {
                        Log.i(TAG, "onSubscribe: " + "綁定前的操作");
                    }

                    @Override
                    public void onNext(@NonNull Student student) {
                        Log.i(TAG, "onNext: " + student.getName());
                    }

                    @Override
                    public void onError(@NonNull Throwable e) {
                        Log.i(TAG, "onError: " + "出現(xiàn)錯誤");
                    }

                    @Override
                    public void onComplete() {
                        Log.i(TAG, "onComplete: " + "已結束");
                    }

                });
    }
}

1) 輸出如下

0.png
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容