为什么先调用方法会在发现后自动断开连接

时间:2017-06-07 07:11:21

标签: rx-java

我是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)

1 个答案:

答案 0 :(得分:0)

establishConnection()RxAndroidBle Observable behaviour状态,只发出一个值,而流未完成。它还声明取消订阅可观察的内容会断开连接。

  

每当您不再对保持连接打开感兴趣时,您应该取消订阅,这将导致断开连接并清理资源。

但是first()运算符会发出单个值并在之后完成流。由于bindUntilEvent(PAUSE)也会在暂停时完成流,因此您根本不需要使用first()。所以只需删除它,一切都应该没问题。