java - 即使在调用 RemoveObserver 之后,Livedata 仍会继续观察

标签 java android

RemoveObserver 以及 RemoveObservers 不工作。感谢一些帮助,为什么即使我在一次调用后删除了观察者,它也会被调用。

public class ABC extends AppCompatActivity{

@Override
protected void onCreate(Bundle savedInstanceState) {

......

db.informationModel.getUserDetails().observe(this, new 
Observer<UserDetailEntity >() {

@Override
public void onChanged(@Nullable UserDetailEntity 
userDetailEntity) {
..... some Code 

db.informationModel.getUserDetails().removeObserver(this);

}

最佳答案

看起来每次您调用 db.informationModel.getUserDetails() 时代码都会打开单独的数据流。

您需要做的是 - 将 Observable 单独存储在一个变量中。然后对其调用 observe() 和 removeObserver() 方法。

代码是这样的

public class ABC extends AppCompatActivity{

@Override
protected void onCreate(Bundle savedInstanceState) {

    ......
    final LiveData<UserDetailEntity> userDetailObservable = db.informationModel.getUserDetails();
    userDetailObservable.observe(this, new Observer<UserDetailEntity >() {

        @Override
        public void onChanged(@Nullable UserDetailEntity userDetailEntity) {
            ..... some Code 

            userDetailObservable.removeObserver(this);

        }
    }
}

关于java - 即使在调用 RemoveObserver 之后,Livedata 仍会继续观察,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51085165/

相关文章:

java - 从另一个 Java 小程序访问 Java 小程序

java - 使用 JFace 渲染表中重复元素的索引

java - 合并多个构建时代码覆盖率错误

android - Gradle:DefaultAndroidSourceDirectorySet to File using toString() 方法已被弃用

android - 使用 glMultMatrixf 进行翻译,以及何时规范化

java - 在一行中将 child 列表转换为 parent 列表

java - 如何创建通过调用外部端点返回响应实体的端点

android - 如何避免滚动时recyclerview晃动?

android - Android 项目的 Maven 原型(prototype)

android - 在android中禁用后退按钮