我们在应用程序中使用rxAndroid:1.1.0
和rxJava:1.1.2
。我们的项目通过以下方式创建了RxJava订阅服务器:
但是,如果不使用参数Subscriber,同时创建一个全新的Subscriber,那么Observable就可以正常工作。
你知道我怎样才能让这件事和参数订阅者一起工作吗?我们希望从活动中调用无法从network service类访问的UI方法onComplete。
这是我的活动代码:
public Subscriber<Models.FavoriteResponse> mFavoritesSubscriber = new Subscriber<Models.FavoriteResponse>() {
@Override
public void onCompleted() {
// empty
Logger.w("mFavoritesSubscriber onCompleted");
showFavorites();
}
@Override
public void onError(Throwable e) {
Logger.w("mFavoritesSubscriber onError");
}
@Override
public void onNext(Models.FavoriteResponse favoriteResponse) {
Logger.w("mFavoritesSubscriber onNext");
getHelper().setIsFavoriteOnProducts(favoriteResponse.getFavoriteResponseList());
}
};
private void removeSelectedFavorites() {
for (Product selectedProduct : selectedProducts) {
ServiceUtils.removeFavorite(this, selectedProduct.sku, mFavoritesSubscriber);
}
}
public static void removeFavorite(final Context context, final String sku, Subscriber<Models.FavoriteResponse> subscriber) {
Logger.w("ServiceUtils removeFavorite");
String userId = PersistentSharedPreferences.readUserId(context);
FavoritesServices service = FavoritesServices.Companion.create(BuildConfig.ORDER_SERVICE_DOMAIN,
new Interceptor(context));
final Observable<Models.FavoriteResponse> observable = service
.deleteFavorite(userId, sku, getFavoritesParameters(context));
observable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.onErrorResumeNext(new Func1<Throwable, Observable<? extends Models.FavoriteResponse>>() {
@Override
public Observable<? extends Models.FavoriteResponse> call(Throwable throwable) {
Logger.w("ServiceUtils onErrorResumeNext");
return null;
}
})
.subscribe(subscriber);
}
但是这个版本的网络服务类方法工作得很好。注意新订阅者:
public static void removeFavorite(final Context context, final String sku, Subscriber<Models.FavoriteResponse> subscriber) {
Logger.w("ServiceUtils removeFavorite");
String userId = PersistentSharedPreferences.readUserId(context);
FavoritesServices service = FavoritesServices.Companion.create(BuildConfig.ORDER_SERVICE_DOMAIN,
new Interceptor(context));
final Observable<Models.FavoriteResponse> observable = service
.deleteFavorite(userId, sku, getFavoritesParameters(context));
observable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.onErrorResumeNext(new Func1<Throwable, Observable<? extends Models.FavoriteResponse>>() {
@Override
public Observable<? extends Models.FavoriteResponse> call(Throwable throwable) {
Logger.w("ServiceUtils onErrorResumeNext");
return null;
}
})
.subscribe(new Subscriber<Models.FavoriteResponse>() {
@Override
public void onCompleted() {
Logger.w("ServiceUtils Subscriber onCompleted");
}
@Override
public void onError(Throwable e) {
Logger.w("ServiceUtils Subscriber onError");
}
@Override
public void onNext(Models.FavoriteResponse favoriteResponse) {
Logger.w("ServiceUtils Subscriber onNext");
}
});
}
如有任何帮助,我们将不胜感激。谢谢你!
不要重用订阅服务器
。订阅者
是一个订阅
,它是有状态的。订阅者
被取消订阅后不会收到通知。
您可以改用observer
。
因此,我在一个控制器中有一个非常简单的代码片段,在这个代码片段中,我使用从外部文件中获取数据,它工作得很好!但是当我使用时,我会在控制台中得到一个
我正在尝试使用Chrome扩展Postman测试一个简单的PHP页面。当我发送URL参数时,脚本运行良好(例如变量在参数中可用)。当我将它们作为参数发送时,参数仅包含。 剧本: 我错过了什么?
问题内容: 我是Go编程语言的新手,最近遇到了以下代码: 但是,我不理解函数签名背后的含义。它接受接口作为参数。你能解释一下这是怎么回事吗?谢谢 问题答案: Go使用接口来泛化类型。因此,如果您想要一个带有特定接口的函数,则可以编写 可以将满足的每种类型传递给。 现在,可以如下所示: 为了满足,实现它的类型必须实现。 但是,如果您需要一个空接口(),则该对象不需要实现要传递给该函数的任何方法: 上
问题内容: 有谁知道为什么这不起作用? 这确实有效: 问题答案: 调用中的第二个参数是一个配置对象。您想要这样的东西: 有关更多详细信息,请参见http://docs.angularjs.org/api/ng.$http的“ 参数” 部分。
我创建了将数据传递给spring rest的代码,但这些代码不能正常工作请参见下面的代码: 我的javascrit有:
问题内容: 该练习直接由Kathy Seirra和Bert Bates撰写的SCJP 同步代码块 在本练习中,我们将尝试同步代码块。在该代码块中,我们将获得对对象的锁定,以便在代码块执行时其他线程无法修改它。我们将创建三个线程,它们都将尝试操纵同一对象。每个线程将输出一个字母100次,然后将该字母加1。我们将使用的对象是StringBuffer。 我们可以在String对象上进行同步,但是一旦创建