java - 实时数据库快照的存储位置

标签 java android firebase-realtime-database

我有一个按以下方式构建的实时数据库:

garage-x23df
    cars
        -LQ0aZ9IP5jCL9Qj5x4D
        -LQ0a_R1Oxh4KazLHVZb
        -LQ0ao2lvhdurSl8qaF1
        -LSsIrK0tziyiJLKfDX1
        ...

我想在不同的 Activity 中操作这些数据(一个 Activity 显示汽车列表,另一个 Activity 显示特定汽车的数据,另一个 Activity 操作过滤的汽车列表等)。

我应该在每个 Activity 中获取一个新的 DataSnapshot 还是应该在获取数据后将其存储在本地并在 Activity 之间发送(我通过从 DataSnapshot 构建可序列化的 ArrayList 来实现这一点,并且我一直通过 Intent )。

我有大约 400 个汽车条目,每个条目包含大约 15 个字段(仅限字符串和 boolean 值),但我希望扩大这个数字。

我担心在 Activity 之间发送如此大的 ArrayList 时会出现性能问题,但另一方面,我认为为每个 Activity 获取 DataSnapshot 效率不高。

执行此操作的最佳实践方法是什么?谢谢!

最佳答案

创建一个单独的 Java 类,它可以在您想要检索项目时从数据库和所有 get 方法检索数据。例如,假设您的数据库中有一个名为“mad”的子节点,其下有其他三个节点,名为 jack、John 和 jimmy,每个节点都有不同的值,例如 jack 的字符串值为“tick”,John 的字符串值为“young' 和 jimmy 的值为 'yipy'。你的类看起来像这样

   public class Retrieve{
     private String Jack;
     private String Jimmy;
     private String John;
   public Retrieve (String Jack, String Jimmy, String John)
     Jack=jack;
     Jimmy=jimmy;
     John=john;
   public Retrieve(){}
   @PropertyName(“jack”)
   public String getJack(){return Jack;}
   @PropertyName(“jimmy”)
   public String getJimmy(){return Jimmy;}
   @PropertyName(“John”)
   public String getJohn(){return John;}

然后您可以检索它们并使用相同风格的代码将它们设置在应用程序的任何部分。假设您想在主要 Activity 中将 jack 的值设置为 TextView ,

   ........
   @Override
   public void onDataChanged(@Nullable DataSnapshot datasnapshot){
   for(DataSnapshot snapshot:dataSnapshot. 
   getChildren()){
   if(snapshot!=null){
    Retrieve retrieve =snapshot.getValue(Retrieve.class);
    if(retrieve!=null){
    String no=retrieve.getJack();
    Dast.setText(no)

关于java - 实时数据库快照的存储位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57464319/

相关文章:

ios - 无法在 Firebase 中访问我的 "Childrens Children"。访问 "nested values."

javascript - Firebase 查询引用 : true

java - 在 Java 中查找 OSX 上的应用程序支持目录

java - 持久化 sha256 哈希对象?

java - 故意引发异常(Android with java)

java - 如何使用计时器以两个不同的间隔/持续时间执行两个不同的操作?

java - FrameLayout 和 Bitmap 内存泄漏导致 OOM

java - 如何根据 child 的值(value)观在 RecyclerView Android 上显示项目

android 在 ListView 中更改行项目 View 相关的一个 fragment

ios - Swift ios Firebase 不返回任何数据