我使用侦听器作为回调来观察Android的异步操作,但是我认为用RxJava替换此侦听器可能很棒,我是使用此库的新手,但是我真的很喜欢它,并且我始终将其与Android项目一起使用。
这是我的重构代码:
public void getData( final OnResponseListener listener ){
if(data!=null && !data.isEmpty()){
listener.onSuccess();
}
else{
listener.onError();
}
}
一个简单的回调:
public interface OnResponseListener {
public void onSuccess();
public void onError();
}
和“观察者”:
object.getData( new OnResponseListener() {
@Override
public void onSuccess() {
Log.w(TAG," on success");
}
@Override
public void onError() {
Log.e(TAG," on error");
}
});
谢谢!
例如,您可以使用 Observable.fromCallable 来创建可观察数据。
public Observable<Data> getData(){
return Observable.fromCallable(() -> {
Data result = null;
//do something, get your Data object
return result;
});
}
然后使用您的数据
getData().subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(data -> {
//do something with your data
}, error -> {
//do something on error
});
使用了rxjava 1.x和lambda表达式。
编辑:
如果我对您的理解很好,则您想替换该侦听器,而不是将其包装为可观察的。我添加了其他示例以参考您的评论。哦.. 如果您只希望一项,也应该使用 Single
。
public Single<Data> getData() {
return Single.create(singleSubscriber -> {
Data result = object.getData();
if(result == null){
singleSubscriber.onError(new Exception("no data"));
} else {
singleSubscriber.onSuccess(result);
}
});
}
getData().subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(data -> {
//do something with your data
}, error -> {
//do something on error
});
问题内容: 给定汽车清单(),我可以这样做: 有没有办法我可以从一个到一个序列? 像没有参数的东西 问题答案: 您可以这样映射到: 请注意,flatMapping可能不会保留源可观察的顺序。如果订单对您很重要,请使用。
我正在尝试开发我的第一个RxJava例子 我有一个带有文本框和三个按钮的主要活动。第一个按钮初始化单独类中的整数。第二个按钮订阅一个可观察量,该可观察量假定正在观察整数。第三个按钮将整数的值减小 1。 这是我的密码 和班级 当我尝试使用 订阅时,它只是给了我 的值(即 6),然后它给了我完成! 然后我尝试使用,认为我需要使用,只是而不是,但后来我得到了一个返回的空的,然后再次完成! 有人能帮助我从
我面临的问题是我需要一个身份验证令牌来创建我的Retrofit服务。我目前使用可观察来获取所述令牌,导致一个相当丑陋的可观察构造: 我忍不住觉得这不是应该做的。我说得对吗?
给出一个汽车列表(
我已经开始学习RxJava和RxAndroid。我想用RxJava替换我的观察者模式。observer模式类似于Android LocationManager类,该类具有register和unregister方法。“observable”类(不意味着rx.observable)在其自己的线程(HandlerThread)中工作,并拥有监听器及其处理程序对象的映射,每个监听器都在其线程中调用(通过处
假设我有一个要转换为反应流的事件发出数据源。数据源由资源(例如,定期发送更新状态的套接字)绑定,所以我希望共享对该资源的单个订阅。使用带有回放的单个observable(新订阅者可以立即获得当前值)和refCount操作符似乎非常适合这样做。例如,这是他的MyDataProvider的外观: 然而,现在假设我有另一个数据源,它需要第一个数据源的结果来计算其自身的值: 在这里,我的设置开始崩溃。第一