【发布时间】:2016-02-24 10:42:51
【问题描述】:
我们有一个场景,我们关闭 BLE Enabled 设备,然后 Android App 屏幕将变灰。但是当关闭 BLE Enabled 设备时, 而不是灰显,屏幕仍然冻结并且 UI 没有响应
在执行 Observable 之后,订阅者中的 onNext()、onCompleted() 和 onError() 等方法都不会被调用。
以下是订阅者代码:
private void subscribeToConnEvents() {
Subscriber<ConnService.ConnEvent> subscriber = new Subscriber<ConnService.ConnEvent>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(ConnService.ConnEvent connEvent) {
}
};
SerializedSubscriber<ConnService.ConnEvent> serializedSubscriber = new SerializedSubscriber<>(subscriber);
}
下面是调用订阅者的 Observable 代码:
在下面的代码中,connectionStateSubject 在构造函数中被初始化
private SerializedSubject<ConnEvent, ConnEvent> connectionStateSubject;
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
super.onConnectionStateChange(gatt, status, newState);
BluetoothDevice device = gatt.getDevice();
String address = gatt.getDevice().getAddress();
ConnectionEvent event = new ConnectionEvent();
event.deviceAddress = address;
if (newState == BluetoothProfile.STATE_DISCONNECTED) {
event.status = ConnectionStatus.STATE_DISCONNECTED;
connectionStateSubject.onNext(event);
}
}
【问题讨论】:
标签: rx-java observable subscriber