2017-01-12 3 views
0

Essayer de configurer la surveillance de l'état de la connexion RxAndroidBle avec un observable. Le code ci-dessous compile (je ne peux pas encore le tester), mais je ne comprends pas vraiment pourquoi. Le deuxième paramètre de l'appel subscribe est supposé être Action1<java.lang.Throwable> onError. Ai-je mis en œuvre correctement? Pourquoi ne puis-je simplement écrireLe composant jetable onError de l'abonnement ne se compile pas comme prévu

throwable -> throw throwable 

Lorsque je tente, la deuxième « throwable » est signalé « ne peut pas résoudre le symbole« throwable », et entre le « -> » et « jette » qu'il dit qu'il attend soit une parenthèse droite, une orthèse gauche ou un point-virgule.

// set up monitoring of connection state with a subscription 
boolean setConnectionStateNotification() { 
    asBleDevice.observeConnectionStateChanges() 
     .subscribe(
      connectionState -> asBleConnectionState = connectionState, 
      throwable -> new RuntimeException("Problem with subscription to Connection State Changes: " 
          + throwable.getMessage()) 
      ); 
    return true; 
} 

TBH Je vais avoir du mal à envelopper mon esprit autour du concept d'un Action1<Throwable>; quelqu'un peut-il l'expliquer, s'il vous plaît?

MISE À JOUR: Je pense que je l'ai peut-être compris. Comme si:

boolean setConnectionStateNotification() { 
    asBleDevice.observeConnectionStateChanges() // returns Observable<RxBleConnection.RxBleConnectionState> 
     .subscribe(
      connectionState -> asBleConnectionState = connectionState, 
      throwable -> { throw new RuntimeException(
       "Problem with subscription to Connection State Changes: " 
        + throwable.getMessage(), throwable); 
      }, 
      () -> RxBleLog.d("Connection State Observable has completed", null) // onCompleted() with no arguments 
      ); // subscribe 
    return true; 
} 

(J'ai aussi ajouté le troisième gestionnaire en option, pour l'appel OnCompleted().)

+0

Bonjour. Pourriez-vous décrire exactement ce que vous voulez accomplir? –

Répondre

0

Je pense que cela peut-être raison:

boolean setConnectionStateNotification() { 
    asBleDevice.observeConnectionStateChanges() // returns Observable<RxBleConnection.RxBleConnectionState> 
     .subscribe(
      connectionState -> asBleConnectionState = connectionState, // save value 
      throwable -> { throw new RuntimeException(
       "Problem with subscription to Connection State Changes: " 
        + throwable.getMessage(), throwable); 
      }, 
      () -> RxBleLog.d("Connection State Observable has completed", null) // onCompleted() with no arguments 
     ); // subscribe 
    return true; 
}