android - 使用 AndroidScheduler.mainThread() 时 RxAndroid 崩溃
问题描述
我使用 RxJava 和 RxAndroid 从 api 获取数据并更新我的视图。但是在使用 RxAndroid AndroidScheduler.mainThread() 之后,应用程序崩溃并出现未知异常。
此外,我正在使用 RX 推荐的 RxJava 和 RxAndroid 3.0.0 版
例外:
2020-08-04 22:15:24.879 6831-6831/com.saswata.illeo E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.saswata.illeo, PID: 6831
java.lang.BootstrapMethodError: Exception from call site #1 bootstrap method
at io.reactivex.rxjava3.android.schedulers.AndroidSchedulers.<clinit>(AndroidSchedulers.java:33)
at io.reactivex.rxjava3.android.schedulers.AndroidSchedulers.mainThread(AndroidSchedulers.java:44)
at com.saswata.illeo.view.activity.ListActivity.fetchData(ListActivity.kt:33)
at com.saswata.illeo.view.activity.ListActivity.onCreate(ListActivity.kt:26)
at android.app.Activity.performCreate(Activity.java:7032)
at android.app.Activity.performCreate(Activity.java:7023)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1236)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2814)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2943)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1630)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6626)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811)
Caused by: java.lang.NoClassDefFoundError: Invalid descriptor: IL.
at io.reactivex.rxjava3.android.schedulers.AndroidSchedulers.<clinit>(AndroidSchedulers.java:33)
at io.reactivex.rxjava3.android.schedulers.AndroidSchedulers.mainThread(AndroidSchedulers.java:44)
at com.saswata.illeo.view.activity.ListActivity.fetchData(ListActivity.kt:33)
at com.saswata.illeo.view.activity.ListActivity.onCreate(ListActivity.kt:26)
at android.app.Activity.performCreate(Activity.java:7032)
at android.app.Activity.performCreate(Activity.java:7023)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1236)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2814)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2943)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1630)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6626)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811)
代码:
onserverInst.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({//someWork},{//someError})
解决方案
我刚刚发现我们可以通过以下方式做同样的事情:
onserverInst
.subscribeOn(Schedulers.io())
.subscribe({
runOnUiThread{
// UI work
}
//someWork
},{//someError})
不使用 RxAndroid,因为我认为它现在非常没用。(至少现在)
推荐阅读
- django - Django:只允许数据输入模型的多个字段之一
- python - 如果 x 相同,你怎么不打印?
- flutter - 列表
' 不是类型 'Map 的子类型 . 解析对模型的 api 响应时出现颤振问题 - spring-cloud-kubernetes - Spring Cloud Kubernetes:支持ConfigMap无法读取事件的失败策略
- android - 将 retfofit 与 MVVM 一起使用时出现错误
- node.js - Mailchimp TooManyRequests?
- java - 如何在 Azure Monitor 中监视 Java 堆使用情况
- elasticsearch - 在 Elastic 中使用 _reindex 将字符串字段转换为浮点数
- rest - 如果我有两个用于同一资源的 URI,那么 REST 响应的 HTTP Location 标头中应该返回什么 URI?
- office365 - Exchange Online 就地存档 - 禁用访问?