Tag: rx android

使用Retrofit 2.0和RxJava获取响应状态代码

我正在尝试升级到Retrofit 2.0,并在我的Android项目中添加RxJava。 我正在做一个API调用,并希望检索错误代码的情况下,从服务器的错误响应。 Observable<MyResponseObject> apiCall(@Body body); 在RxJava调用中: myRetrofitObject.apiCall(body).subscribe(new Subscriber<MyResponseObject>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(MyResponseObject myResponseObject) { //On response from server } }); 在1.9版本中,RetrofitError仍然存在,我们可以通过以下方式获得状态: error.getResponse().getStatus() 如何使用RxJava进行Retrofit 2.0操作?

将RxJava 1.0代码更新到RxJava 2.0

我正在更新一些旧的Android应用程序代码,并不知道如何将在RxJava / RxAndroid 1.0工作的代码转换为RxJava / RxAndroid 2.0。 我试图转换的代码负责获取信号强度指标,并每秒用它的值更新图表。 我设法在RxJava 2.0中破解的功能根本不起作用,几秒钟后,SIGABORT崩溃。 我无法弄清楚我错过了什么? 我的RxJava 1代码: rx.Observer myObserver = new rx.Observer<Float>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(Float aFloat) { addEntry(aFloat); } }; subscription = rx.Observable.interval(1, TimeUnit.SECONDS) .flatMap(new Func1<Long, rx.Observable<Float>>() { @Override public rx.Observable<Float> call(Long aLong) { […]

如何在Android中获取ObservableField的值

您好我有我的java代码中的这个ObservableField 。 我想通过调用get方法来获得它的价值。 val email = ObservableField<String>() 这可以使用下面的方法来完成。 我很困惑,不知道我应该在这里做一个getter来获得它的价值吗? 或者有不同的标准方法来获取ObservableField的值我也在我的应用程序中使用RxJava。 fun login(view: View) { val emailVal = email.get() }

RxJava Live实时反应队列(带开关)

在kotlin上开发一个android应用程序。 我需要建立一个系统,以便能够从一个实时队列中进行工作(并观察流中的工作结果)。 但是我也必须能够根据像networkIsAvailable (Observable<Boolean>)这样的一对外部因素(也是以流的形式出现)切换“队列处理”。 我不能使用Observable.fromIterable()因为这会立即创建迭代,这个队列将会调整,并且项目可能会被删除。 我需要一些可以完成项目的循环,检查以确保我们应该继续前进,然后弹出队列中的第一项并执行此操作。 我不确定如何在订阅中做这样的循环? 队列也可以是空的,当切换开启时,事情应该重新开始。 也许我应该推出这个决定(关于是否处理队列中的下一个项目)到Subject<Boolean>? 然后订阅那个重新启动过程的主题? 例子: 打开—-处理队列顶部,处理队列顶部(先前被轮询掉)—关闭 – 不再处理 再次开启 – 队列进程顶部,队列空 – 停止 将项目添加到队列 – 进程 – 停止队列空 打开处理 – 将项目添加到队列 – 直到它重新打开时才进行处理 打开 – 处理顶部项目

如何在Android中将许多AsyncTasks转换为Rx Observables?

我正在使用Facebook Graph API来查找喜欢我的帖子的用户。 所有的逻辑实现在几个步骤: 通过向AsyncTask中的API发送请求来查找所有帖子 将此AT转换为Rx.Observable 将观察者GraphResponse映射到列表(Post是POJO) 调用FlatMap运算符,并在其中调用每个帖子并调用asyncTask的body调用方法,然后将其转换为Observable并放入Array中。 在一个可观测数据中合并观测数组。 将其GraphResponse映射到喜欢的配置文件 订阅并呈现“客户列表” 利润! 在步骤#4-5我有一些小问题。 请看存储库中的方法'喜欢'。 在评论中,我写了问题 提示 :我正在使用MVP +清洁架构与存储库(数据层)和Interactor(业务层) class FacebookRepository { private val facebook = Facebook.instance() private val gson = GsonBuilder().create() fun posts(): Observable<GraphResponse>? { return RxDecorator<GraphResponse>().decorate(Observable.defer({ val request = GraphRequest( facebook.token, "/me/posts", null, HttpMethod.GET, GraphRequest.Callback { /* handle the result */ } ) Observable.just(request.executeAndWait()) […]

Android RxJava / Kotlin – 将大量数据映射到网络呼叫

我试图实现一个Android应用程序,需要从后端服务获取大量的数据,并将其保存到数据库,以便以后工作。 下面的代码描述了这个过程: itemsService .getAllItemIds() //This returns Single<List<Int>> from backend .subscribeOn(Schedulers.io()) .subscribe({ Observable.fromIterable(it) .map({ itemsService .getItemById(it) //This gets one item details from backend .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe({ //Add item details to db }, { //Some error }) }) }, { //Some error }) 我获得一个ID列表,然后映射每个这些ID到一个网络调用来获得完整的对象。 这适用于10个项目的测试集,但是生产集包含超过5万个ID。 它起初工作,节省的项目,但约5-10%的研磨停下来,应用程序死亡。 我假设这里的原因是Rx保持源和映射值之间的引用。 我的问题是:是否有办法将源排放“汇集”到一起,比方说,10? 或者也许还有一些我不知道的其他机制?

如何有条件地在RxJava流中添加一个异步操作?

这里是我想要做的简化版本(使用Kotlin和RxJava) makeServerCall() .doOnNext { doStuff(it) } //TODO: if it == 0, call asyncOperation() and wait for its callback to fire //before running the rest of the stream. Otherwise immediately run the rest //of the stream .flatMap { observable1(it) observable2(it) Observable.merge( getSpotSearchObservable(observable1), getSpotSearchObservable(observable2) } .subscribeBy(onNext = { allDone() view? }) 如何挤压调用asyncOperation()并使流的其余部分等待其回调触发,但是只有在满足某些条件时才会触发。 这看起来似乎可能是Rx的一个微不足道的操作,但是没有什么明显的解决方案。

如何在Kotlin中使用RxAndroid + Retrofit获取响应标题?

我有一个API可观察返回一个CUSTOM_MODEL。 我想从这个调用也得到响应头。

如何用RxAndroid压缩Kotlin语言中的几个观察值

大家! 我有一些问题。 我是RxJava / RxKotlin / RxAndroid的初学者,并不了解某些功能。 例如: import rus.pifpaf.client.data.catalog.models.Category import rus.pifpaf.client.data.main.MainRepository import rus.pifpaf.client.data.main.models.FrontDataModel import rus.pifpaf.client.data.product.models.Product import rx.Observable import rx.Single import rx.lang.kotlin.observable import java.util.* class MainInteractor { private var repository: MainRepository = MainRepository() fun getFrontData() { val cats = getCategories() val day = getDayProduct() val top = getTopProducts() return Observable.zip(cats, day, top, MainInteractor::convert) } private […]

Kotlin库'rxkotlin-0.21.0.jar'具有不受支持的格式。 请更新库或插件

标题中的错误出现在Android Studio中,作为警告栏,高于我的所有代码: Android Studio版本: 1.1.0 Android Studio的Kotlin插件版本: 0.11.91.AndroidStudio.4 build.gradle文件似乎正在使用所有最新版本的Kotlin库: apply plugin: 'com.android.application' apply plugin: 'kotlin-android' android { compileSdkVersion 22 buildToolsVersion "22.0.1" defaultConfig { applicationId "ca.amandeep.simpletransit" minSdkVersion 16 targetSdkVersion 22 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } sourceSets { main.java.srcDirs += 'src/main/kotlin' } } dependencies { compile […]