Я решил использовать аннотацию @CheckReturnValue, чтобы убедиться, что в моем коде я всегда подписываюсь на текучий объект. Но я заметил, что в некоторых случаях это не работает. Это похоже на проблему Lint, но, возможно, я что-то делаю неправильно или не получаю что-то.
- Вызываемый метод.
@CheckReturnValue
fun insertTask(task: Groupie): Completable = Completable.fromAction { dao.insertTask(task) }
.subscribeOn(Schedulers.io())
Код, который вызывает метод:
fun test(g: Groupie, obj: Any) {
db.insertTask(g) // 1.
when (obj) {
is WebSocketMessage.GroupieUpdate -> {
subs.add(db.getTask(g.id).map { oldGroupie -> g.copy(text = oldGroupie.text) }
.subscribe(
{ t -> db.insertTask(t) }, // 2.
::onError
)
)
db.insertTask(g) // 3.
}
}
}
ВОПРОС : почему именно 1-й вызов помечается как неправильный в Lint в Android Студия, но 2-го и 3-го нет?
RxJava v2.2.19
Android Studio v3.6.1