java – 我应该删除ValueEventListener吗?

        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在一个新线程中运行,我是否应该在任何时候实际删除它以进行正确的线程管理? (没有太多并行运行的线程的示例).如果是的话,该怎么办?

最佳答案
在谈论听众时,是的,您需要根据活动的生命周期删除它们,为此您需要使用以下代码行:

databaseReference.removeEventListener(valueEventListener);

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

>如果您已在onStart中添加了侦听器,则必须在onStop中将其删除.
>如果您在onResume中添加了侦听器,则必须在onPause中将其删除.
>如果您已在onCreate中添加了侦听器,则必须在onDestroy中将其删除.

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

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

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

转载注明原文:java – 我应该删除ValueEventListener吗? - 代码日志