Firebase-Android,如何在连接丢失后恢复时同步数据?

时间:2015-12-14 02:46:20

标签: android firebase

我的情况是我在登录时连接到互联网,然后关闭所有连接并发布一些数据(推送+设置)。之后,我再次连接,但我发现新数据没有发送到服务器。

如何在连接恢复后立即强制数据同步

注意我从头开始使用它:

public Collection<File> findAndCollectDuplicates( Node<File> root, File f )
{
    /* find a matching node; if none found, return an empty collection. */
    Node<File> node = findNode( root, f );
    if( node == null )
         return Collections.emptyList();

    /* collect duplicates and return them. */
    List<File> duplicates = new ArrayList<>();
    collectDuplicates( node, f, duplicates );
    return duplicates;
}

private Node<File> findNode( Node<File> root, File f )
{
    for(;;)
    {
        int result = f.compareTo( root.data );
        if (result == 0)
            return root;
        root = result < 0? root.leftChild : root.rightChild;
        if( root == null )
            return null;
    }
}

private void collectDuplicates( Node<File> node, File f, Collection<File> duplicates )
{
    if( node == null )
        return;
    if( f.compareTo( node.data ) != 0 )
        return;
    duplicates.add( node.data );
    collectDuplicates( node.leftChild );
    collectDuplicates( node.rightChild );
}        

2 个答案:

答案 0 :(得分:0)

Firebase会自动执行此操作。当连接丢失时,Firebase将继续在本地脱机触发事件,并将数据保持在缓存中。

本地持久性缓存具有大小限制。当缓存达到限制时,SDK将取消使用最少的数据。使用.keepSynced()只是确保数据不会从缓存中清除的一种方法。

答案 1 :(得分:0)

此问题与Firebase-Android, Fail to save data after long time idle

的原因相同

不是真的关闭“关闭所有连接”,让app闲置很长时间然后就会发生。