Sre*_*hat 1 java multithreading android firebase firebase-realtime-database
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) {
}
});
Run Code Online (Sandbox Code Playgroud)
我理解ValueEventListener在一个新线程中运行,我是否应该在任何时候实际删除它以进行正确的线程管理?(没有太多并行运行的线程的示例).如果是的话,该怎么办?
在谈论听众时,是的,您需要根据活动的生命周期删除它们,为此您需要使用以下代码行:
databaseReference.removeEventListener(valueEventListener);
Run Code Online (Sandbox Code Playgroud)
请记住,如果你不这样做,你最终会浪费你的电池和带宽.所以:
onStart则必须将其删除onStop.onResume则必须将其删除onPause.onCreate则必须将其删除onDestroy.但要记住onDestroy的not总是叫,所以并不总是一个不错的选择最后一个选项.
还有另一种方法,不需要删除监听器,这是在使用addListenerForSingleValueEvent时:
为此位置的数据中的单个更改添加侦听器.
| 归档时间: |
|
| 查看次数: |
1143 次 |
| 最近记录: |