2016-09-22 74 views
1

我现在正在使用新的Firebase API在我的第一个应用中工作。而且我在通过我的代码保留Firebase对象引用时遇到问题,因为我不知道哪种方法可以实现此目的。在代码中保存Firebase参考的最佳方式

所以,情况就是这样。我有一个应用程序,我的用户可以创建组,并且在这些组中(他们可以属于多个组),他们可以发布一些内容。在我的实际火力地堡的数据库,它看起来像:

{ 
    "Posts":{ 
      "GroupKey1":{ 
       "PostKey1":{ 
        "text": 
        "imageUrl": 
        "author":{ 
         ... 
        } 
       } 
       "PostKey2":{ 
        "text": 
        "imageUrl": 
        "author":{ 
         ... 
        } 
       } 
       "PostKey3":{ 
        "text": 
        "imageUrl": 
        "author":{ 
         ... 
        } 
       } 
      } 
      "GroupKey2":{ 
       .... 
      } 
     } 
} 

所以,当我想收回关联到做一个查询的特定组iI'm帖子:

Query newQuery = FirebaseDatabase.getInstance().getReference().child("posts").child(mCurrentGroupID); 

一切都很好与。它的工作,并没有问题。但我需要保持mCurrentGroupID String保持我的组活动和片段中的所有生命周期。现在我正在使用bundle来保持字符串在代码中存活,但它开始变得非常有帮助。

所以,我的问题是,在代码中保持这种变量的最佳方式是什么?使用SharedPreferences?仍然在使用捆绑包,一个静态变量,一个BaseActivity中的默认项目,它被扩展用于其余的活动...

希望有人能帮我一把!谢谢大家!

回答

2

我会坚持让全局变量在Application这个专门用于Android的应用程序中用于整个应用程序。 Here是一个教程,介绍如何使用应用程序类来保存和检索全局变量

1

一旦您第一次收到该ID,您可以将它存储在SharedPreferenceManager中,其余的地方是从SharedPreferenceManager获取的地方。每次您从Firebase获取该ID时,请继续更新该ID。

+0

我已经考虑将它保存在SharedPreferences中,但是一个用户可以有多个组,所以我需要在用户每次更改之间修改此值一组到另一组。这就是为什么我不知道是否是最好的方式! –

+0

是的,每当用户更改组时,都从firebase获取当前组ID并在prefManager中更新它。 – Pr38y

+0

另一种方法是从firebase本身获取,但我认为它会再次进行网络调用。 – Pr38y

相关问题