在请求期间调用.dispose()会导致NPE。有什么办法可以解决这个问题?
错误消息
java.lang.NullPointerException: The callable returned a null value
W/System.err: at io.reactivex.internal.functions.ObjectHelper.requireNonNull(ObjectHelper.java:39)
at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:44)
at io.reactivex.Single.subscribe(Single.java:3575)
at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578)
W/System.err: at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
答案 0 :(得分:0)
这并非来自调用dispose
,这是fromCallable
的结果,即null
。在Rxjava 2中,您无法通过Steam传播空值。它将像您遇到的那样导致空指针异常。您需要检查代码并找出避免返回null的方法。也许使用一个空对象表示没有值。
对此有一个例外,也许是解决此问题的最佳方法。如果方法返回Maybe.fromCallable
,则null
将返回一个可观察的空值。在您的情况下,这可能是最准确的事情。