Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 即使在调用RemoveObserver之后,Livedata也会继续观察_Java_Android - Fatal编程技术网

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

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

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

}
公共类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(此);
}
}
}