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. ddos - apache日志很多其它網址,什么情況?2. javascript - 百度搜索網站,如何讓搜索結果顯示一張圖片加上一段描述,如圖;求教3. 怎么在phpstudy中用phpexcel上傳數據到MYSQL?4. html5 - H5 audio 微信端 在IOS上不能播放音樂5. css3 - css 設置高度為1px,瀏覽器顯示的是0.99px6. java - 微信小程序中 無緣無故的提示(圖片的加載失?。?/a>7. 二維數組怎么重新組合8. javascript - 百度地圖自己的產品可以精確定位,為什么我調用他的公開API卻必須經過用戶同意才能獲取精確定位,而且還慢?9. javascript - [多圖預警]reactjs點擊某表格編輯內容,跳轉傳值this.context.router.params.id時id報錯未定義10. android - 類似于微信朋友圈圖片這樣的是在listview中嵌套gridview還是動態加入多個imageview呢?
