
我想知道当互联网连接突然丢失时如何控制我的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上的连接丢失,那么我将无法显示消息.
题
因为看起来这是解决这个问题的唯一方法.你能不能给出一个方法或@R_301_6954@案来解决这个问题,我不想因为数据库结构不完整而导致我的应用程序崩溃.
解决方法:
在没有交易的情况下,您需要做一些事情来确保您的应用在不可靠的条件下工作.
>按照最容易防止或检测故障的顺序写入数据.您首先编写文件,然后才更新数据库.由于您可能会在数据库记录上触发其他进程,因此在步骤3完成之前不会触发它们.所以你已经这样做了.
>编写您的阅读代码,以防止可能存在的不完整数据.例如:即使URL已进入数据库,也不要假设文件是正确的,甚至不存在.当您在单独的读取 *** 作中从数据库中读取多个节点时,请按顺序读取它们,以便最简单地检测不完整或损坏的数据,并在这种情况下跳过该项目.
>运行常规批处理以清除孤立数据.我承认,这通常不值得花费,但保持数据尽可能正确是一个良好的卫生问题.
以上是内存溢出为你收集整理的android – Firebase处理连接突然丢失全部内容,希望文章能够帮你解决android – Firebase处理连接突然丢失所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)