android - 如何从 .map 运算符调用 HandlerThread 上的 .start
问题描述
我正在学习如何在 Android 中处理和使用函数式编程。所以我开发了下面的代码。我想将 HandlerThread 视为可观察的,但是当我尝试从 .map() 运算符调用 .start() 时,我收到以下错误:
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, ":");
}
}
解决方案
在地图中,你总是需要返回一个值(T)你不能返回一个 void 所以你可以试试
this.getObsInitializedHandlerThread()
.map(mMyHandlerThread ->{
mMyHandlerThread.start();
return mMyHandlerThread;
});
推荐阅读
- gnuplot - Gnuplot 中的孵化(图案填充)
- python - ImportError:使用 OpenCV 运行 Docker 容器时出现 libGL.so.1
- python - 熊猫识别两列具有相同字符串的行
- java - “应用程序未响应”意图广播 { act=android.intent.action.SCREEN_OFF flg=0x50000010 }
- python - 在 Python3 中处理浮点数
- javascript - 为什么在将代码注入浏览器时多次调用我的 Onload 事件处理程序?
- java - Snowplow RDB 加载程序无法连接到 Redshift 数据库
- javascript - 用 = 加入对象键值对的最简单方法
- flutter - 使用 multpartFile 上传图像时已放弃 BufferQueue
- regex - Notepad ++ Replace All 无法使用零长度匹配