代码:
static void readCharacteristic( RxBleDevice device, UUID characteristic, Action1<byte[]> callback ) {
Observable<RxBleConnection> deviceConnObservable = getSharedConnectionObservable( device );
deviceConnObservable
.subscribe(
callback,
throwable -> Log.d( TAG, "Error" ),
() -> { } // completed the read
);
}
我假设当该方法退出时,deviceConnObservable
被破坏。但是Subscriber
中的处理程序呢?他们是也走了,还是继续存在并被召唤——也许是Observable
被摧毁时onError()
处理者?
假设他们没有,是否有可以在方法中创建Observable
的情况?如果您等待其onCompleted()
通知,似乎应该没问题,不是吗?
如果getSharedConnectionObservable
在当前线程中运行,则订阅在方法退出之前完成。
如果您的getSharedConnectionObservable
是异步的,则存在指向Observable
的引用链。
Worker(Thread)
-> Task(Action0)
-> { DownStream(Subscriber)
& UpStream(Observable)
( OperatorSubscribeOn
)}
您的Observable
将完成,您可以自己尝试。