假设我有一个firebase数据库位置,/foo
,它下面现在有五个孩子。我希望在接下来的几分钟里会有更多的孩子加入。我在这个数据库引用上有一个子事件监听器,当我按预期添加监听器时,会立即接到5个回onChildAdded()
的调用。
只要我的Android应用程序正在运行来处理新的孩子,我就要让我的听众保持下去,但就目前而言,比如说,在应用程序启动时,我真的很感兴趣,当我得到了现有的五个孩子的最后一个。
我该怎么做?
我不想添加ValueEventListener
和ChildEventListener
,因为这只会在数据传输时增加一倍。感觉应该在api中的某个地方有一个Task
可以在完成时从中获取回调,但我找不到它。
最佳答案
我现在已经使用了一个延迟处理程序,不过我很乐意接受一个更好的答案。
class PositionListener implements ChildEventListener {
private MyService service;
private final Handler lastChildHandler = new Handler();
private final Runnable lastChildRunnable = new Runnable() {
@Override
public void run() {
service.onModelChanged();
}
};
@Override
public void onChildAdded(DataSnapshot snapshot, String previousChildName) {
// Omitted: Handle this child.
// Push the time at which we let the service know the model has
// changed and redraw the view out another 20ms. This means
// lastChildRunnable.run() will never actually run until after
// the last child for a while.
lastChildHandler.removeCallbacks(lastChildRunnable);
lastChildHandler.postDelayed(lastChildRunnable, 20);
}
// Omitted: other overrides
}
关于java - 我现在如何知道最后一次调用ChildEventListener.onChildAdded()的时间?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41386940/