我正在使用RxAndroid将背景线程中的字符串编组到主线程中,并对该主线程上的字符串进行处理:
String stringFromDatabase = readFromDatabase();
Observable.just(stringFromDatabase)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<String>() {
@Override
public void accept(String string) throws Exception {
webViewFragment.onInjectMessage(string, null);
}
});
Android Studio将鼠标悬停在其上时,以黄色突出显示了整个Observable.just...
命令链,告诉我“ 未使用订阅的结果”。
如果将.dispose()
添加到链的末尾,则突出显示消失,但是webViewFragment.onInjectMessage(string, null);
代码不再执行。
[我注意到我可以通过在整个方法中添加@SuppressLint("CheckResult")
注释来删除突出显示。
这是可以安全地忽略的警告,还是在这里造成某种内存泄漏或其他问题?这是不好的做法吗?
您必须将其处置以避免内存泄漏。尝试放置在onDestroy
Disposable disposable;
String stringFromDatabase = readFromDatabase();
disposable = Observable.just(stringFromDatabase)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<String>() {
@Override
public void accept(String string) {
webViewFragment.onInjectMessage(string, null);
}
});
@Override
protected void onDestroy() {
super.onDestroy();
disposable.dispose();
}