0

Observable で RxAndroidBle 接続ステータスの監視を設定しようとしています。以下のコードはコンパイルできます (まだテストできません) が、その理由は完全にはわかりません。呼び出しの 2 番目のパラメーターは でsubscribeあるはずAction1<java.lang.Throwable> onErrorです。これを正しく実装しましたか?なぜ私はちょうど書くことができない

throwable -> throw throwable

私が試してみると、2番目の「throwable」には「シンボル「throwable」を解決できません」というフラグが付けられ、「->」と「throw」の間で、右括弧、左中括弧、またはセミコロンのいずれかが必要であると表示されます。

// 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 Action1<Throwable>;の概念を理解するのに苦労しています。誰か説明してくれませんか?

更新:私はそれを理解したかもしれないと思います。そのようです:

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

(onCompleted() 呼び出し用に 3 番目のオプション ハンドラーも追加しました。)

4

1 に答える 1

0

私はこれが正しいかもしれないと思います:

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;
}
于 2017-01-13T02:51:15.137 に答える