RxAndroid `Observable...subscribe` 在 Android Studio 中突出显示
RxAndroid `Observable...subscribe` highlighted in Android Studio
我正在使用 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();
}
我正在使用 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();
}