我的情况是我在登录时连接到互联网,然后关闭所有连接并发布一些数据(推送+设置)。之后,我再次连接,但我发现新数据没有发送到服务器。
如何在连接恢复后立即强制数据同步
注意我从头开始使用它:
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 );
}
答案 0 :(得分:0)
Firebase会自动执行此操作。当连接丢失时,Firebase将继续在本地脱机触发事件,并将数据保持在缓存中。
本地持久性缓存具有大小限制。当缓存达到限制时,SDK将取消使用最少的数据。使用.keepSynced()
只是确保数据不会从缓存中清除的一种方法。
答案 1 :(得分:0)
此问题与Firebase-Android, Fail to save data after long time idle
的原因相同不是真的关闭“关闭所有连接”,让app闲置很长时间然后就会发生。