在一个方法中创建一个临时的 Observable
Creating a temporary Observable inside a method
代码:
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
就完成了,你可以自己试试
代码:
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
就完成了,你可以自己试试