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. python - Pycharm调试代码进行列表遍历时,如何直接赋值指定元素2. 安装mysql,完成时提示的是用户名root,在终端查看版本时显示的不是root,请问这怎么解决3. python - pig latin问题 总是出现list/string index out of range4. 为什么HTML5规范中会包含一些和html无关的东西?如本地存储等。5. python - 如何解决程序运行太久之后被操作系统暂停的情况?6. mysql - 5w条数据的批量更新的sql7. javascript - sublime已经安装了babel插件和sublimelinter-jshint为什么还是显示es6语法错误?8. css3 - img垂直水平居中问题9. css3 - canvas在IOS8中不兼容。画不出来。10. 闯关的第二个问题的答案是错的吧?

网公网安备