//学习rxjava基本操作符
public class RxJavaActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rx_java);
IterListform();
}
//rxjav的from函数可以循环一个集合
private void IterListform() {
List mList=new ArrayList();
mList.add(1);
mList.add(2);
mList.add(3);
mList.add(4);
mList.add(4);
mList.add(5);
loadList(mList);
FilteList(mList);
}
//利用from循环一个集合
public void loadList(List mList){
/* RxJava提供了5种调度器:
.io() I/O操作
.computation() 计算工作默认的调度器
.immediate() 调度器允许你立即在当前线程执行你指定的工作
.newThread() 为指定任务启动一个新的线程。
.trampoline() ,并不是立即,我们可以用.trampoline()将它入队 */
Observable.from(mList)
.subscribeOn(Schedulers.io()) //循环的耗时操作在Io线程
.observeOn(AndroidSchedulers.mainThread())//结果回掉在主线程
.subscribe(new Action1<Integer>() {
@Override
public void call(Integer name) {
Toast.makeText(RxJavaActivity.this,name+"",Toast.LENGTH_SHORT).show();
Log.e("from",name+"");
}
});
}
//过滤集合take()和takeLast()
public void FilteList(List mList){
Observable.from(mList)
.take(3)//代表只要集合中前3个数据
.subscribe(new Action1<Integer>() {
@Override
public void call(Integer name) {
Log.e("take",name+"");
}
});
Observable.from(mList)
.takeLast(3)//代表只要集合中后3个数据
.subscribe(new Action1<Integer>() {
@Override
public void call(Integer name) {
Log.e("takeLast",name+"");
}
});
Observable.from(mList)
// .repeat(3)//重复添加这个集合三次
.distinct()//去重将集合中的重复元素去掉
.subscribe(new Action1<Integer>() {
@Override
public void call(Integer name) {
Log.e("distinct",name+"");
}
});
Observable.from(mList)
.distinctUntilChanged()//忽略掉所有的重复并且只发射出新的值。适用于跟新较快的时候
// .repeat(3)//重复添加这个集合三次
.distinct()//去重将集合中的重复元素去掉
.subscribe(new Action1<Integer>() {
@Override
public void call(Integer name) {
Log.e("distinctUntilChanged",name+"");
}
});
//每隔3秒执行一次
Observable<Long> interval = Observable.interval(3, TimeUnit.SECONDS);
interval.subscribe(new Observer<Long>() {
@Override
public void onCompleted() {
Log.e ("interval","onCompleted");
}
@Override
public void onError(Throwable e) {
Log.e ("interval","onError");
}
@Override
public void onNext(Long aLong) {
Log.e ("interval","onNext");
}
});
//2秒之后发出一个动作
Observable.timer(2, TimeUnit.SECONDS)
.subscribe(new Observer<Long>() {
@Override
public void onCompleted() {
Log.e ("timer","onCompleted");
}
@Override
public void onError(Throwable e) {
Log.e ("timer","onError");
}
@Override
public void onNext(Long number) {
Log.e ("timer","onNext");
}
});
//将输入的数字按顺序输出
Observable.just(1,2,3)
.subscribe(new Observer<Integer>() {
@Override
public void onCompleted() {
Log.e ("just","onNext");
}
@Override
public void onError(Throwable e) {
Log.e ("just","onNext");
}
@Override
public void onNext(Integer integer) {
Log.e ("just","integer"+integer);
}
});
//将类型改变成string
Observable.just(1,2,3)
.map(new Func1<Integer, String>() {
@Override
public String call(Integer integer) {
//转换成string
return integer+"";
}
})
.subscribe(new Observer<String>() {
@Override
public void onCompleted() {
Log.e ("map","onNext");
}
@Override
public void onError(Throwable e) {
Log.e ("map","onNext");
}
@Override
public void onNext(String integer) {
Log.e ("map","integer"+integer);
}
});
}
}
RxJava
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 目录更新~RXJava Part 2 Subject当然先看完本篇文章再看第二篇吧 使用RXJava实现观察者模式...
- 相信看完前两篇文章,相信大家对RxJava的用例已经有个比较清晰的认识了。今天我们来看看RxJava的一个exte...
- RxJava系列文章目录导读: 一、RxJava create操作符的用法和源码分析二、RxJava map操作符...