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);
}
答案 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);
}
}
}