最最基礎的android使用RxJava介紹
很久很久以前,就看了各種介紹RxJava的文章,網上最出名的也看過了,但還是處於一知半解狀態,最近再看,決定實踐Talk is cheap,show me code。以程式碼說話,這樣也會更容易理解。
首先還是介紹一下主角RxJava吧,百度百科的說法:RxJava是用於使用Java VM的可觀察序列編寫非同步和基於事件的程式的庫。別問我這句話怎麼理解,或是什麼意思,我也說不清楚。套用網上著名文章(給Android 開發者的 RxJava 詳解)裡的說法:RxJava的本質可以壓縮為非同步這一個詞,說到根上,它就是一個實現非同步操作的庫。
RxJava核心思想就是觀察者模式,對於觀察者模式,也是研究了好幾次,先給出解釋:
觀察者模式(有時又被稱為模型-檢視(View)模式、源-收聽者(Listener)模式或從屬者模式)
是軟體設計模式的一種。在此種模式中,一個目標物件管理所有相依於它的觀察者物件,
並且在它本身的狀態改變時主動發出通知。這通常透過呼叫各觀察者所提供的方法來實現。
此種模式通常被用來實現事件處理系統。
根據特定場景來理解這些名詞是最通俗的辦法 ,觀察者模式涉及兩種身份,觀察者和被觀察者,你可以想象,你自己(碼神、碼農、碼畜、程式猿、程式媛)就是觀察者,產品需求說明書是被觀察者。你是需要根據開發需求說明書來幹活的,這關係到身家性命,所以你要觀察它。但是 ,說明書是產品部門給出的,你不能知道他們什麼時候會出來。放心,產品部門有新的功能會迫不及待告訴你的。這時候,被觀察者有更新,就會發送通知給觀察者。大概就是這麼個意思。
程式碼解釋一切:
開始開發前,工具還是要齊全的:新增依賴
compile 'io.reactivex.rxjava2:rxjava:2.0.1'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
第一步:建立被觀察者
Observable productDoc = Observable.create(new ObservableOnSubscribe<String>() { @Override public void subscribe(ObservableEmitter<String> e) throws Exception { e.onNext("需求文件版本1.0"); e.onNext("需求文件版本2.0"); e.onNext("需求文件版本3.0"); e.onComplete(); } });
第二步:建立觀察者
Observer<String> programmer = new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
Log.e(TAG,"onSubscribe");
}
@Override
public void onNext(String value) {
Log.e(TAG,"onNext:"+value);
}
@Override
public void onError(Throwable e) {
Log.e(TAG,"onError="+e.getMessage());
}
@Override
public void onComplete() {
Log.e(TAG,"onComplete()");
}
};
第三步:建立訂閱關係
productDoc.subscribe(programmer);
至於第三步為什麼是產品需求文件訂閱了程式設計師,這個似乎是RxJava內部實現被迫如此,有了解的讀者可以評論,我也漲漲見識。
執行結果如下:
至此,這個超級簡單的RxJava呼叫完成了。
注:文章肯定有很多寫的不好的地方,可能在理解上還會出現錯誤或偏差,只是想將這種思想記錄下來,供大家理解,歡迎評論!