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



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

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(( 时,代码都会打开单独的数据流。

您需要做的是 - 将可观察量单独存储在变量中。然后调用 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);
}
}
}