Kotlin 将RxJava与api、room、改装一起使用时发出致命信号11 SIGSEGV(RxCachedTreadS)
在我的应用程序中,我使用RxJava、一些API、改装和Room 我的应用程序在启动进程后间歇性崩溃,有时它会工作10~15分钟。 但它总是强迫完成显示这个错误 A/libc:tid 30800中的致命信号11(SIGSEGV),代码1,故障地址0x20(RX计算) 我找不到引起此错误的代码 MyActivity.ktKotlin 将RxJava与api、room、改装一起使用时发出致命信号11 SIGSEGV(RxCachedTreadS),kotlin,retrofit2,android-room,rx-java2,Kotlin,Retrofit2,Android Room,Rx Java2,在我的应用程序中,我使用RxJava、一些API、改装和Room 我的应用程序在启动进程后间歇性崩溃,有时它会工作10~15分钟。 但它总是强迫完成显示这个错误 A/libc:tid 30800中的致命信号11(SIGSEGV),代码1,故障地址0x20(RX计算) 我找不到引起此错误的代码 MyActivity.kt override fun onCreate(savedInstanceState: Bundle?) { GlobalScope.launch(Dispatch
override fun onCreate(savedInstanceState: Bundle?) {
GlobalScope.launch(Dispatchers.IO) {
while (true) {
viewModel.gatherChangeAfterLastLogin()
delay(10000L)
}
}
}
class viewModel(application: Application) : AndroidViewModel(application) {
fun gatherChangeAfterLastLogin() {
var a = Observable.fromIterable(someObject...)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe { }
var b = Observable.fromIterable(someObject...)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe { }
var c = Observable.fromIterable(someObject...)
.flatMap {
var one = Observable.fromIterable(someObject...).onErrorReturn{ Collections.emptyList() }
var two = Observable.fromIterable(someObject...).onErrorReturn{ Collections.emptyList() }
var three = Observable.fromIterable(someObject...).onErrorReturn{ Collections.emptyList() }
Observable.mergeDelayError(one, two, three)
}
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
}, {
}, {
})
}
}
viewModel.kt
override fun onCreate(savedInstanceState: Bundle?) {
GlobalScope.launch(Dispatchers.IO) {
while (true) {
viewModel.gatherChangeAfterLastLogin()
delay(10000L)
}
}
}
class viewModel(application: Application) : AndroidViewModel(application) {
fun gatherChangeAfterLastLogin() {
var a = Observable.fromIterable(someObject...)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe { }
var b = Observable.fromIterable(someObject...)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe { }
var c = Observable.fromIterable(someObject...)
.flatMap {
var one = Observable.fromIterable(someObject...).onErrorReturn{ Collections.emptyList() }
var two = Observable.fromIterable(someObject...).onErrorReturn{ Collections.emptyList() }
var three = Observable.fromIterable(someObject...).onErrorReturn{ Collections.emptyList() }
Observable.mergeDelayError(one, two, three)
}
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
}, {
}, {
})
}
}
build.gradle
implementation "io.reactivex.rxjava2:rxkotlin:2.2.0"
implementation "io.reactivex.rxjava2:rxandroid:2.1.1"
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.2.0'
implementation 'com.squareup.retrofit2:converter-scalars:2.1.0'
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
implementation 'com.squareup.retrofit2:retrofit-converters:2.4.0'
implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
在我看来,var c Observable是可疑的,因此即使我对其进行注释并运行,结果也是一样的
而且,如果我将Schedulers.io()更改为Schedulers.computation(),
错误详细信息如下所示
A/libc:tid 30800中的致命信号11(SIGSEGV),代码1,故障地址0x20(RX计算)
我不知道问题发生在哪里,因为错误是这样出现的这不是RxJava问题,因为RxJava在Android运行时运行,而这个问题是由于一些libc问题(SIGSEGV)。很可能是Android运行时(Android版本)的问题,或者你的设备上有一个奇怪的Android图像。你能发布墓碑()的内容吗?这不是RxJava的问题,因为RxJava运行在Android运行时上,而这个问题是因为一些libc问题(SIGSEGV)。很可能是Android运行时(Android版本)的问题,或者你的设备上有一个奇怪的Android图像。你能把墓碑()的内容贴出来吗?