【问题标题】:How do I remove ValueEventListener in android?如何在 android 中删除 ValueEventListener?
【发布时间】:2017-08-03 13:33:18
【问题描述】:

我已经使用 Firebase 工作了 2 周。我需要你的帮助。

   public void closeReadRef() {
    if (readRef != null)
        readRef.removeEventListener(listener);
}

上面的代码必须删除我的侦听器,但它不起作用。我在onPauseonDestroyonStop中调用了这个方法:

    @Override
public void onStart() {
    FirebaseUtility.getInstance().closeReadRef();
    super.onStart();
}

@Override
public void onPause() {
    super.onPause();
}

@Override
public void onResume() {
    super.onResume();
}

我做错了什么?为什么我不能取消监听器? 谢谢。

编辑

我在 Activity 内的 onCreate() 中调用下面的方法。

 public void setReadTrueInFireBase(final String currentID, final String location) {
    instance.currentID = currentID;
    instance.location = location;
    readRef = FirebaseDatabase.getInstance().getReferenceFromUrl(Constant.FIREBASE_DATABASE_URL);
    readRef.child("conversations").child(location).addValueEventListener(listener);
}

【问题讨论】:

  • 您将addValueEventListeneraddChildEventListener 放在哪里?并且可能向我们展示创建listener 对象的代码。
  • 对不起@koceeng 我会添加它。

标签: android firebase firebase-realtime-database listener


【解决方案1】:

databasereference.removeEventListener(listener);

你需要将添加的监听器保存在一个变量中

【讨论】:

    【解决方案2】:

    试试这个:

    DatabaseReference readRef;
    ValueEventListener listener;
    
    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        readRef = FirebaseDatabase.getInstance().getReferenceFromUrl(Constant.FIREBASE_DATABASE_URL);
        listener = readRef.child("conversations").child(location).addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    /* ... */
                }
    
                @Override
                public void onCancelled(DatabaseError error) {
                    /* .... */
                }
            });
     }
    
    @Override
    public void onStop() {
        if (readRef != null && listener != null) {
            readRef.removeEventListener(listener);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-07-29
      • 2016-12-22
      • 2018-08-16
      • 2017-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多