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



我有一个实时数据库,结构如下:

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

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

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

我有大约 400 个汽车条目,每个条目包括大约 15 个字段(仅限字符串和布尔值(,但我希望缩放这个数字。

我担心在活动之间发送如此大的 ArrayList 时会出现性能问题,但另一方面,我认为为每个活动获取 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;}

然后,你可以检索它们,并使用相同的代码样式在应用的任何部分设置它们。例如,假设您想在主活动中设置一个从插孔到文本视图的值,

........
@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)

最新更新