Как вызвать .start на HandlerThread из оператора .map - PullRequest
0 голосов
/ 21 декабря 2018

Я научился работать с Android и использовать его в функциональном программировании.Поэтому я разработал следующий код.Я хотел бы обработать HandlerThread как наблюдаемый, но когда я пытаюсь вызвать .start () из оператора .map (), я получаю следующую ошибку:

    no instances of type variable(s) R exists so that  void conforms to R

, пожалуйста, дайте мне знать, почему я получаю этоошибка и способ ее решения.

код :

public Single<HandlerThread> getObsInitializedHandlerThread() {
    this.mMyHandlerThread = new MyHandlerThread(NAME_MY_HANDLER_THREAD);
    return Single.just(this.mMyHandlerThread);
}

@Override
protected void onResume() {
    super.onResume();
    String TAG_LOG = ActMain.TAG_LOG + "." + "onResume()";
    Log.v(TAG_LOG, ":");

    this.getObsInitializedHandlerThread()
            .map(mMyHandlerThread -> mMyHandlerThread.start());
}

private class MyHandlerThread extends HandlerThread {

    public MyHandlerThread(String name) {
        super(name);
        String TAG_LOG = ActMain.class.getSimpleName() + "." + "MyHandlerThread() Constructor";
        Log.v(TAG_LOG, ":");
    }

    @Override
    protected void onLooperPrepared() {
        super.onLooperPrepared();
        String TAG_LOG = ActMain.class.getSimpleName() + "." + onLoopPrepared()";
        Log.v(TAG_LOG, ":");
    }
}

1 Ответ

0 голосов
/ 21 декабря 2018

На карте вам всегда нужно возвращать значение (T), вы не можете вернуть пустоту, поэтому вы можете попробовать

 this.getObsInitializedHandlerThread()
        .map(mMyHandlerThread ->{
 mMyHandlerThread.start();
return mMyHandlerThread;
});
...