Android 用可观察的Rxjava包装遗留异步任务?
我必须使用一个遗留库,它使用AsyncTask作为后台作业。如何用当前项目中使用的可观察对象包装AsyncTask AsyncTask已封装,因此我无法访问AsyncTask内的同步调用 提前感谢 假设您有一个对象asynchronousCall,它使用call()方法执行一些异步工作,该方法将callback作为参数,您可以这样包装它:Android 用可观察的Rxjava包装遗留异步任务?,android,android-asynctask,rx-java,Android,Android Asynctask,Rx Java,我必须使用一个遗留库,它使用AsyncTask作为后台作业。如何用当前项目中使用的可观察对象包装AsyncTask AsyncTask已封装,因此我无法访问AsyncTask内的同步调用 提前感谢 假设您有一个对象asynchronousCall,它使用call()方法执行一些异步工作,该方法将callback作为参数,您可以这样包装它: Observable.create(new Observable.OnSubscribe<Object>() { @Ove
Observable.create(new Observable.OnSubscribe<Object>() {
@Override
public void call(final Subscriber<? super Object> subscriber) {
asynchronousCall.call(new CallBack() {
@Override
public void success(Object o) {
subscriber.onNext(o);
subscriber.onCompleted();
}
@Override
public void error(Throwable t) {
subscriber.onError(t);
}
});
}
});
Observable.create(新建Observable.OnSubscribe()){
@凌驾
public void call(final Subscriber当您不能或不想在可观察的中包装执行时,另一种方法是使用:
publicstaticvoidmain(字符串[]args){
Subject Subject=PublishSubject.create();
侦听器侦听器=新侦听器(){
@凌驾
公用void onCallback(对象){
subject.onNext(object);
subject.onCompleted();
}
};
subject.subscribe(对象->你的反应(对象));
someMethodWithCallback(侦听器);
}
公共接口侦听器{
void onCallback(对象);
}
Subject
作为观察者
允许您向其发送项目,而作为观察者
允许您订阅并接收这些事件。很抱歉,请问您是如何实现的?您如何调用该库?如果该库具有任何同步调用功能,那么您可以轻松转换它到可观察对象。感谢您的提问。库提供了一个AsyncTask,并需要一个侦听器来处理回调。同步调用位于AsyncTask内部,因此我无法从中访问以创建可观察对象。感谢您的回答,我刚刚更新了我的问题,并提供了更多详细信息:AsyncTask已封装,因此我无法访问AsyncTask内部的同步调用。谢谢在本例中asynchronousCall.call()也是异步的,这就是它将回调作为参数的原因,您能否提供一个简短的示例,说明您现在如何使用该api?非常感谢。您让我高兴了。很抱歉没有仔细阅读您的答案。