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()) //在新線程上重復發(fā)送2次.observeOn(AndroidSchedulers.mainThread()) //在主線程上觀測.subscribe(peoples1 -> { String s = people1.toString(); num++; show.setText(String.valueOf(num)); Log.e('---',s);});
這里,just先發(fā)射第一個 People:people1,之后再發(fā)射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. python2.7 - python 函數(shù)或者類 代碼的執(zhí)行順序2. node.js - mysql如何通過knex查詢今天和七天內的匯總數(shù)據(jù)3. python - scrapy 如何組合2個不同頁面的數(shù)據(jù),一并存儲4. mysql 怎么做到update只更新一行數(shù)據(jù)?5. javascript - 用jsonp抓取qq音樂總是說回調函數(shù)沒有定義6. mysql優(yōu)化 - mysql 一張表如果不能確保字段列長度一致,是不是就不需要用到char。7. sublime可以用其他編譯器替換嗎?8. 使用python中的pandas求每個值占該列的比例9. python - 多態(tài)調用方法時卻顯示bound method...10. javascript - 新浪微博網(wǎng)頁版的字數(shù)限制是怎么做的
