Java 即使在调用RemoveObserver之后,Livedata也会继续观察
RemoveObserver以及RemoveObserver不工作。感谢您的帮助,为什么我在一次呼叫后移除了观察器后仍会调用它Java 即使在调用RemoveObserver之后,Livedata也会继续观察,java,android,Java,Android,RemoveObserver以及RemoveObserver不工作。感谢您的帮助,为什么我在一次呼叫后移除了观察器后仍会调用它 public class ABC extends AppCompatActivity{ @Override protected void onCreate(Bundle savedInstanceState) { ...... db.informationModel.getUserDetails().observe(this, new Observer<U
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);
}
公共类ABC扩展AppCompative活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
......
db.informationModel.getUserDetails().observe(这个,新的
观察员(){
@凌驾
public void onChanged(@Nullable UserDetailEntity
用户详细信息(实体){
…一些代码
db.informationModel.getUserDetails().removeObserver(此);
}
每次调用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);
}
}
}
公共类ABC扩展AppCompative活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
......
final LiveData userDetailObservable=db.informationModel.getUserDetails();
userDetailObservable.observe(这个,新的观察者(){
@凌驾
更改后的公共void(@Nullable UserDetailEntity UserDetailEntity){
…一些代码
userDetailObservable.removeObserver(此);
}
}
}