//学习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操作符...