【发布时间】:2018-09-06 10:29:25
【问题描述】:
我今天升级到了 Android Studio 3.1,它似乎增加了一些 lint 检查。其中一项 lint 检查是针对未存储在变量中的一次性 RxJava2 subscribe() 调用。例如,从我的 Room 数据库中获取所有玩家的列表:
Single.just(db)
.subscribeOn(Schedulers.io())
.subscribe(db -> db.playerDao().getAll());
导致一个大的黄色块和这个工具提示:
subscribe的结果没有被使用
这样的一次性 Rx 调用的最佳做法是什么?我应该保持完整的Disposable 和dispose() 吗?还是我应该只是 @SuppressLint 继续前进?
这似乎只影响 RxJava2 (io.reactivex),RxJava (rx) 没有这个 lint。
【问题讨论】:
-
在您的两种解决方案中,老实说,我认为@SuppressLint 不是最好的。也许我错了,但我真的认为代码永远不应该改变 IDE 警告和/或提示
-
@ArthurAttout 同意,目前我在成员范围内保持
Disposable并在单曲完成时调用dispose(),但这似乎不必要的麻烦。我有兴趣看看是否有更好的方法来做到这一点。 -
我认为当 RxJava 流未从 Activity/Fragment/ViewModel 中订阅时,这个 lint 警告很烦人。我有一个 Completable 可以安全运行而无需考虑 Activity 生命周期,但我仍然需要处理它吗?
-
考虑 RxLifecycle
标签: android android-studio rx-java2 lint android-studio-3.1