android - Rxjava 的 Repeat 操作符
問題描述
先看我的代碼:(用于測試的)
People people1 = new People('join','21');People people2 = new People('jane','29');Observable.just(people1,people2).subscribeOn(AndroidSchedulers.mainThread()) //在主線程上把 UI 初始化.doOnNext(people -> { num = 0; show.setText(String.valueOf(num));}).repeat(4,Schedulers.newThread()) //在新線程上重復發送2次.observeOn(AndroidSchedulers.mainThread()) //在主線程上觀測.subscribe(peoples1 -> { String s = people1.toString(); num++; show.setText(String.valueOf(num)); Log.e('---',s);});
這里,just先發射第一個 People:people1,之后再發射people2.但是呢,Logcat如下:
06-29 20:25:20.251 32688-32688/demo.chestnut.com.test E/---: People{name=’join’, age=’21’}06-29 20:25:20.251 32688-32688/demo.chestnut.com.test E/---: People{name=’join’, age=’21’}06-29 20:25:20.281 32688-32688/demo.chestnut.com.test E/---: People{name=’join’, age=’21’}06-29 20:25:20.281 32688-32688/demo.chestnut.com.test E/---: People{name=’join’, age=’21’}06-29 20:25:20.287 32688-32688/demo.chestnut.com.test E/---: People{name=’join’, age=’21’}06-29 20:25:20.287 32688-32688/demo.chestnut.com.test E/---: People{name=’join’, age=’21’}06-29 20:25:20.302 32688-32688/demo.chestnut.com.test E/---: People{name=’join’, age=’21’}06-29 20:25:20.302 32688-32688/demo.chestnut.com.test E/---: People{name=’join’, age=’21’}
這里打印了8次的 people1,按理由,不是應該打印4次 people1,打印4次的people2嗎?
問題解答
回答1:.subscribe(peoples1 -> { String s = people1.toString(); //問題出在這里的`people1` ,本該用`peoples1`的 num++; show.setText(String.valueOf(num)); Log.e('---',s);});
相關文章:
1. 基于Spring MVC Java的配置無法正常工作控制臺顯示無錯誤,但我的jsp頁面未顯示2. java - mac下配置ndk環境變量3. 為啥最大化個窗口還得找一堆理由?4. css - psd設計稿給的是1920寬的,而我的電腦是1600寬的,那我在寫代碼時,是不是每個寬度都要計算調整5. javascript - Angular2中聲明的成員變量為何顯示undefined?6. java - new + 類名,一定需要申明一個對象嗎?7. HTML表單操作標簽調用父相對URL8. javascript - 根據不同數據顯示不同內容9. css3 - 如圖的flex骰子布局是怎么實現的?10. android - 京東app下面的table背景怎么實現的?
