Как правильно использовать @CheckReturnValue в Rx Java? - PullRequest
1 голос
/ 27 марта 2020

Я решил использовать аннотацию @CheckReturnValue, чтобы убедиться, что в моем коде я всегда подписываюсь на текучий объект. Но я заметил, что в некоторых случаях это не работает. Это похоже на проблему Lint, но, возможно, я что-то делаю неправильно или не получаю что-то.

  1. Вызываемый метод.
    @CheckReturnValue
    fun insertTask(task: Groupie): Completable = Completable.fromAction { dao.insertTask(task) }
        .subscribeOn(Schedulers.io())

Screenshot 2020-03-27 at 18 05 27

Код, который вызывает метод:
    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.
            }
        }
    }

Screenshot 2020-03-27 at 18 06 53

ВОПРОС : почему именно 1-й вызов помечается как неправильный в Lint в Android Студия, но 2-го и 3-го нет?

RxJava v2.2.19

Android Studio v3.6.1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...