我是RxJava的新手,当我阅读rxandroidble库的演示时,我想知道为什么第一个可以断开连接。
Name: java.lang.IncompatibleClassChangeError
Message: org.apache.spark.sql.sources.TableScan
StackTrace: at java.lang.ClassLoader.defineClassImpl(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:349)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:154)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:727)
at java.net.URLClassLoader.access$400(URLClassLoader.java:95)
at java.net.URLClassLoader$ClassFinder.run(URLClassLoader.java:1182)
at java.security.AccessController.doPrivileged(AccessController.java:686)
at java.net.URLClassLoader.findClass(URLClassLoader.java:602)
答案 0 :(得分:0)
establishConnection()
个RxAndroidBle Observable behaviour状态,只发出一个值,而流未完成。它还声明取消订阅可观察的内容会断开连接。
每当您不再对保持连接打开感兴趣时,您应该取消订阅,这将导致断开连接并清理资源。
但是first()
运算符会发出单个值并在之后完成流。由于bindUntilEvent(PAUSE)
也会在暂停时完成流,因此您根本不需要使用first()
。所以只需删除它,一切都应该没问题。