【发布时间】:2018-04-29 09:46:44
【问题描述】:
我想知道当互联网连接突然中断时如何控制我的 firebase 写入请求。为了解释我的问题,我将举这个例子:
示例
假设我一次写 3 次:
1) WRITE 1 : 表示将图片上传到 Firebase 存储。
2) WRITE 2 :表示将另一张图片上传到 Firebase 存储。
3) WRITE 3:表示将(WRITE 1)和(WRITE 2)的url链接存入实时数据库。
一次执行 3 次写入的合理方法是根据每个的完整侦听器链接它们
类似这样的:
//WRITE 1
storageref.putfile(image1).addOnCompleteListener(new OnCompleteListener{
//get link of this write and do WRITE 2
//WRITE 2
storage ref.putfile(image2).addOnCompleteListener(new OnCompleteListener{
//get the link of this write and do WRITE 3
// WRITE 3
Map links=new HashMap();
links.put("image1", link1);
links.put("image2", link2);
databaseref.child("images").setValue(links).addOnCompleteListener(new OnCompleteListener{
//show a message
});
});
});
如您所见,实现此目的的唯一方法是将它们链接在一起,以便在一个写入完成时执行另一个写入,依此类推。
问题
案例 1:如果 WRITE 1 连接丢失,则其他写入将无法完成。
案例 2:如果在 WRITE 2 时连接丢失,那么最后一次写入将不会执行,我最终会在存储中得到无用的文件。因为我无法将它们发送到数据库。
案例 3:如果在 WRITE 3 上连接丢失,那么我将无法显示消息。
问题
看来这是解决这个问题的唯一方法。您能否提供解决此问题的方法或解决方案,我不希望由于数据库结构不完整而导致我的应用程序崩溃。
【问题讨论】:
标签: android firebase firebase-realtime-database database-connection firebase-storage