2017-01-12 2 views
0

Versuch, die Überwachung des RxAndroidBle-Verbindungsstatus mit einem Observable einzurichten. Der folgende Code kompiliert (ich kann es noch nicht testen), aber ich verstehe nicht ganz, warum. Der zweite Parameter des subscribe Aufrufs soll Action1<java.lang.Throwable> onError sein. Habe ich das richtig umgesetzt? Warum kann ich nichtThrowable onError-Komponente der Subskription, die nicht wie erwartet kompiliert wird

nur schreiben
throwable -> throw throwable 

Wenn ich versuche, die zweite „throwable“ ist markiert „nicht Symbol‚throwable‘lösen“, und zwischen dem „->“ und „werfen“ es sagt, dass es erwartet, entweder ein rechtes Zeichen, eine linke Klammer oder ein Semikolon.

// 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 Ich habe Probleme mit meinem Kopf um das Konzept eines Action1<Throwable> Einwickeln; Kann mir bitte jemand erklären?

UPDATE: Ich denke, ich habe es herausgefunden. Wie so:

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; 
} 

(Ich habe auch die dritten optionalen Handler für die OnCompleted() -Aufruf.)

+0

Hallo. Können Sie beschreiben, was genau Sie erreichen möchten? –

Antwort

0

ich denke, das Recht hat:

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; 
}