即使在调用RemoveObserver之后,Livedata仍保持观察

时间:2018-06-28 14:15:30

标签: 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);

}

1 个答案:

答案 0 :(得分:5)

每次您调用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);

        }
    }
}