【问题标题】:How can I fetch data from my firebase storage when just data changed? Android当数据发生变化时,如何从我的 Firebase 存储中获取数据?安卓
【发布时间】:2018-12-13 21:10:33
【问题描述】:

我目前正在对我的项目进行一些测试。在我的 firebase 存储中,我有一个大约 4 MB 的数据库。作为测试,当我按下一个按钮时,我会将这个数据库拉到手机上。问题是,当我按下按钮时,数据正在被重写。这是互联网套餐的浪费。我想,当我按下按钮时,如果数据发生了变化,应该重新下载。如果它没有改变,不要再把它弄下来。

你对这个话题有什么看法?

谢谢你,最好的。

【问题讨论】:

  • 嘿@HüseyinErenGüler,我的回答对您解决问题有帮助吗?
  • 我可以说我以自己的方式解决了这个问题。但是你的建议对我帮助很大。谢谢。
  • 很好,请将答案标记为正确,如果您认为它对您有帮助并且可能会帮助其他人寻找答案,我将不胜感激。干杯! :)

标签: android firebase firebase-realtime-database firebase-storage


【解决方案1】:

我认为有两种方法可以做到这一点。一种方法是将这些信息放在 Firebase 数据库中。

有了可以快速获取信息的数据库,您可以随时将所有数据放在上面。

我的意思是,当您第一次将图像上传到 Firebase 存储时,您可以添加一个 changeTimestamp 字段,其中包含添加图像时的时间戳。

而且,只要您的 Firebase 存储发生变化,您就可以简单地更新该字段。然后您可以根据 changeTimestamp 值的新近度了解您的存储中是否发生了变化。

另一种方法是使用 Cloud Functions for Firebase,它可以真正解决您需要服务器而无需服务器的大部分问题。

在此处查看:Cloud Functions

【讨论】:

    【解决方案2】:

    你应该使用这个监听器

     ref.addChildEventListener(new ChildEventListener() {
     @Override
    public void onChildAdded(DataSnapshot dataSnapshot, String prevChildKey) {}
    
    @Override
    public void onChildChanged(DataSnapshot dataSnapshot, String prevChildKey) {
    Post changedPost = dataSnapshot.getValue(Post.class);
    System.out.println("The updated post title is: " + changedPost.title);
    
    // write yout code
    }
    
    @Override
    public void onChildRemoved(DataSnapshot dataSnapshot) {}
    
    @Override
    public void onChildMoved(DataSnapshot dataSnapshot, String prevChildKey) {}
    
    @Override
    public void onCancelled(DatabaseError databaseError) {}
    }); 
    

    参考link

    【讨论】:

      猜你喜欢
      • 2015-02-13
      • 1970-01-01
      • 2010-12-08
      • 1970-01-01
      • 2017-04-07
      • 1970-01-01
      • 2019-06-27
      • 2019-08-14
      相关资源
      最近更新 更多