2016-02-24 2 views
0

У нас есть сценарий, в котором мы выключаем устройство BLE Enabled, а затем экран Android App должен быть серым. Но когда выключить устройство BLE Enabled, вместо Greying, экран остается зависающим, и пользовательский интерфейс не отвечаетДанные, полученные от Observer, не активируют подписчика в Rx Java

Ни один из методов, таких как 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); 
} 

Ниже Наблюдаемый код, из которого абонент будет называться:

В Ниже Кодекса 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); 
    } 
} 

ответ

0

Вам необходимо подписать подписчика на предмет. Что-то вроде -

serializedSubscriber.add(connectionStateSubject.subscribe()) 
Смежные вопросы