繁体   English   中英

即使在调用RemoveObserver之后,Livedata也会继续观察

[英]Livedata keeps observing even after calling RemoveObserver

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);

        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM