//二 rxjava的不完整定义回调 rxjava会根据自定义创建出Subscriber观察者
/*
* 生命周期的不完全回调
* ActionX x=? 就表示?个范型参数
*
* */
Action1<String>action1 = new Action1<String>() {
@Override
public void call(String s) {
// 不完全的回调 带参数 相当于执行 onnext 回调方法
Log.i(TAG, "call: 不完全回调"+s);
}
};
Action1<Throwable>action11 = new Action1<Throwable>() {
@Override
public void call(Throwable throwable) {
// 相当于执行了 onError
}
};
Action0 action0 = new Action0() {
@Override
public void call() {
// 相当于执行了 onComplete
}
};
// 调用即可
observable.subscribe(action1);
observable.subscribe(action1,action11);
observable.subscribe(action1,action11,action0);
// 不完全回调的案例 打印字符串数组
String[] name={"Tom","jerry","kate"};
//几个对象相当于被观察者调用onnext几次
// 例如subscriber.onNext("hello"); subscriber.onNext("world");
Observable.from(name).subscribe(new Action1<String>() {
@Override
public void call(String s) {
// 此处被观察者执行的操作 在观察者的回调中都可以看到 及使用
Log.i(TAG, "call: "+s);
}
});
// 不完全回调案例 根据id 获取图片
final int drawableRe = R.mipmap.ic_launcher;
final ImageView imageView = new ImageView(this);
Observable.create(new Observable.OnSubscribe<Drawable>() {
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public void call(Subscriber<? super Drawable> subscriber) {
Drawable drawable = getTheme().getDrawable(drawableRe);
subscriber.onNext(drawable);
subscriber.onCompleted();
}
}).subscribe(new Observer<Drawable>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable throwable) {
}
@Override
public void onNext(Drawable drawable) {
imageView.setImageDrawable(drawable);
Log.i(TAG, "onNext: "+"图片设置成功");
}
});
网友评论