Как вызвать.start на HandlerThread из оператора.map
Я научился обращаться с функциональным программированием в 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 ответ
На карте вам всегда нужно возвращать значение (T), вы не можете вернуть пустоту, так что вы можете попробовать
this.getObsInitializedHandlerThread()
.map(mMyHandlerThread ->{
mMyHandlerThread.start();
return mMyHandlerThread;
});