Tag: rx java2

为什么我不能在这个Rx变压器中使用接口作为通用types?

我在Kotlin中有以下数据类作为参考: interface GenericResponse { val error: Error? fun hasErrorObject(): Boolean = error != null } data class LoginResponse( val name: String, val auth: String, @SerializedName(“error”) override val error: Error? = null ) : GenericResponse LoginResponse实现GenericResponse 。 我正在使用以下方式的Retrofit API: @POST(“******”) fun createSession(@Body body: LoginBody): Single<Response> 此外,如果存在如下所示,我使用一个变换器从LoginResponse提取错误: class ExceptionTransformers { fun wrapRetrofitExceptionSingle(): (Single<Response>) -> Single { return […]

使用RxAndroid处理onKeyDown

我使用https://github.com/mkoslacz/Moviper为我的应用程序的Android电视盒。 只有一个活动与多个子碎片。 我只想在事件尚未处理时才将onKeyDown传播到子片段。 不使用RxJava很容易。 我可以返回一个布尔值来告诉事件已经处理或不。 有没有一种方法可以使用RxJava来处理? 我使用Kotlin作为源语言。 这是我正在尝试做的事情。 class MainActivity : ViperAiPassiveActivity(), HomeContract.View { private val keyPressSubject = BehaviorSubject.create() private lateinit var predicate: (KeyEvent) -> Boolean override fun keyPresses(predicate: (KeyEvent) -> Boolean): Observable { this.predicate = predicate return keyPressSubject } override fun createPresenter() = HomePresenter() override fun getLayoutId(): Int { return R.layout.activity_main } override fun […]

RxJava2 +在数据请求时改装黑屏

我正在尝试使用RxJava2和Retrofit2(在Kotlin中)检索某些Api数据时遇到了Android应用程序的问题。 一旦我执行呼叫,屏幕变黑,应用程序不再响应,没有任何日志消息。 我正在使用的通话url如下: api/apartments?projection={“id”:1,”address”:1} 这个调用的服务接口是这样的: @GET(“api/apartments?projection={\”id\”:1,\”address\”:1}”) fun getAllApartments(@Header(AUTHORIZATION) auth: String): Single<List> 这是我执行呼叫的方式: override fun getAllApartments(): Single<List> = retrofit.create(ApartmentsService::class.java).getAllApartments(“$BEARER$token”) 这就是我所说的function: getAllApartmentsUseCase.getAllApartments() .subscribe( { apartments.clear() apartments.addAll(it) view.showApartments(apartments) }, { println(it.message) } ) 这个调用适用于Postman,结果如下: [ { “_id”: “591ecaca861a528a5b4c3d90”, “id”: “ROC 03” }, { “_id”: “591a0fb2861a528a5b4c3d60” }, { “_id”: “58be94d484c4b0a468fb93e0”, “id”: “CAN 2.3”, “address”: “Els Refugis” } ]

Completable。Then Then result in“other is null”

我有以下代码: fun edit(note: Note): Completable = getValidationCompletable(note).andThen(repository.insertOrUpdate(note)) private fun getValidationCompletable(note: Note): Completable { return if (!note.isValidForEdit()) { Completable.error(IllegalArgumentException(“note failed validation before edit”)) } else { Completable.complete() } } 在note.isValidForEdit()返回false的情况下,我得到以下内容: java.lang.NullPointerException: other is null at io.reactivex.internal.functions.ObjectHelper.requireNonNull(ObjectHelper.java:39) at io.reactivex.Completable.concatWith(Completable.java:1040) at io.reactivex.Completable.andThen(Completable.java:908) 任何人都可以解释这一点吗?

我如何合并一个<List <List >>与RxJava 2的列表?

我想要做的就是敲一个终端来获得一个用户列表,返回Single<List> 。 接下来,我想抓住前三名用户,并击中另一个端点,以获取他们的所有postSingle<List> 。 最后,我想显示一个Toast ,其中前3个用户的post总数 。 我已经能够用Kotlin中的flatten()函数来实现它了。 不过,我想知道如何使用RxJava 2来做到这一点。可能吗? 谢谢。 … getPostsForFirstThreeUsers() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( { posts -> toast(“There are: ${posts.flatten().size} posts”) }, { ex -> Timber.e(ex, “there was an error processing the request”) } ) fun getFirstThreeUsers(): Flowable { return getAllUsers() .flattenAsFlowable { users -> users } .doOnNext { Timber.i(“a user: ${it.username}”) } […]

使用Rx-Java时,Android视图在旋转后为空

我正在使用Kotlin Android Extensions访问片段中的所有视图,该视图按预期工作,即使在屏幕旋转后也可以正常访问。 当我尝试访问Rx-Java可观察间隔内的视图时,问题就开始了: var interval = Observable.interval(10, TimeUnit.SECONDS, Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) interval.retry().subscribe { updateUi(); } 如果我间隔旋转屏幕。 updateUi()方法下次作为observable的一部分运行时,其内部的视图将为空,并且应用程序将崩溃,并出现以下exception: io.reactivex.exceptions.OnErrorNotImplementedException:text_view不能为null 但是,如果我尝试运行可观察性以外的方法,一切都将正常工作。 我知道,使用findViewById()访问视图将正确地检索视图,但是这会破坏具有kotlin-android-extensions的purpuose。

RxKotlin(RxJava2)timeout()不会抛出TimeoutException

我试图得到一个使用两个不同超时值的示例工作。 第一个排放量的初始值较大,随后的所有排放量则为较短的值。 这个例子是从RxJava v1x的Java转换为Kotlin,虽然我试图这是v2x(不知道这是否有任何区别)。 问题是第一个事件的超时不会引发TimeoutException 。 设置的值低于500毫秒,我期待一个堆栈跟踪打印,但我得到的输出,如果没有发生超时(后续排放超时设置为40毫秒导致堆栈跟踪如预期)。 以下示例阻止成功初始超时有什么问题? fun nextSolarEclipse(after: LocalDate): Observable { return Observable .just( LocalDate.of(2016, Month.MARCH, 9), LocalDate.of(2016, Month.SEPTEMBER, 1), LocalDate.of(2017, Month.FEBRUARY, 26), LocalDate.of(2017, Month.AUGUST, 21), LocalDate.of(2018, Month.FEBRUARY, 15), LocalDate.of(2018, Month.JULY, 13), LocalDate.of(2018, Month.AUGUST, 11), LocalDate.of(2019, Month.JANUARY, 6), LocalDate.of(2019, Month.JULY, 2), LocalDate.of(2019, Month.DECEMBER, 26) ) .skipWhile { date -> !date.isAfter(after) } .zipWith( Observable.interval(500, […]

如何使用RxJava2 combineLatest与Kotlin中的可观察列表

我知道如何在RxJava 2中做到这一点 。 而且我知道RxKotlin如何帮助解决类似的问题。 但似乎RxKotlin.Observables没有这个帮助函数的列表超载,我无法弄清楚。 你会怎么做?

如何修复使用RxLifecycle.bindToLifecycle()转换的Completable中的types推断错误?

我正在使用Kotlin和RxJava2。 它在其他types,即Observable等工作正常,但是当我使用一个Completabletypes时,它给了我一个types推理的错误: type inference failed: Not enough information to infer parameter T in fun bindToLifecycle(): LifecycleTransformer Please specify it explicitly 这是我正在使用的代码: viewModel .updateText(returnedText) // the completable method .compose(activity.bindToLifecycle())

RxJava zip使用Android Studio 3.0在Kotlin中遇到IDE错误

我想用Interval Observable创建一个Observable,它包含Observable,Observable包含Observable对象的列表,这样,来自第一个Observable的Observable将会有一定的时间延迟。 这是我的实现: val just1 = ArrayList() 填充一些项目 fun populateJust1() { just1.add(SomeClass1(“23”, 23)) just1.add(SomeClass1(“24”, 24)) just1.add(SomeClass1(“25”, 25)) } populateJust1() 并以间隔Observable压缩 Observable.fromIterable(just1) .zipWith(Observable.interval(2, TimeUnit.SECONDS)) { item: SomeClass1, interval: Long -> item } .subscribe(Consumer { someClass1 -> Log.v(“someClass1”, someClass1.toString()) }) 然而,IDE,Android Studio 3.0以zipWith运算符为红色,并表示: 所提供的参数都不能调用以下函数。 (((观察者:观察者)→单位)!,((t1:SomeClass1,t2:长)→R)!)其中R不能被推断; U = Long for fun zipWith(other:((observers:Observer)→Unit)!,zipper:((t1:SomeClass1,t2:U)→R)!):Observable! 在io.reactivex.Observable zipWith(ObservableSource!,BiFunction!)中定义,其中R无法推断; U =长! 为了好玩zipWith(其他:ObservableSource!,拉链:BiFunction!):可观察! 定义在io.reactivex.Observable […]