gpt4 book ai didi

java - 我真的应该删除 ValueEventListener 吗?

转载 作者:行者123 更新时间:2023-11-29 09:51:48 26 4
gpt4 key购买 nike

        DatabaseReference Ref = FirebaseDatabase.getInstance().getReference(Constants.Client + "/" + path);
Ref.keepSynced(true);
Ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {

}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});

我知道 ValueEventListener 在一个新线程中运行,我真的应该在任何时候删除它以进行适当的线程管理吗? (并行运行的线程不多的示例)。如果是,怎么做?

最佳答案

当谈到监听器时,是的,您需要根据 Activity 的生命周期删除它们,为此您需要使用以下代码行:

databaseReference.removeEventListener(valueEventListener);

请记住,如果不这样做,您最终会浪费电池和带宽。所以:

  1. 如果您在 onStart 中添加了监听器,则必须在 onStop 中将其删除。
  2. 如果您在 onResume 中添加了监听器,则必须在 onPause 中将其删除。
  3. 如果您在 onCreate 中添加了监听器,则必须在 onDestroy 中将其删除。

但是请记住 onDestroy not 总是被调用,所以最后一个选项并不总是一个好的选择。

还有另一种不需要删除监听器的方法,那就是使用 addListenerForSingleValueEvent 时。 :

Add a listener for a single change in the data at this location.

关于java - 我真的应该删除 ValueEventListener 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48861350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com