单例或静态 class

Singleton or Static class

我有 2 个 Data-Classes 来存储一些值。第一个 Class (Custom1) 有一个 Custom2 类型的变量。

我想通过不同的活动填充变量并将信息存储到 sql- 数据库中。

Main -> Activity1(Var1 填充)-> Activity2(Var 2 填充)-> Activity3(Var 4 填充)-> SQL.

为了填充 Var3(Custom2 类型),我想实现一项服务,因为数据是从 Internet 获取的。 (在Activity1中调用->用户在activity2中填写数据时获取数据的时间->在Activity3结束时存储在SQL中)

现在我考虑实现一个单例 class,其中写入所有数据(来自 3 个活动和服务),最后将哪些值存储到 SQL 中。这是最好的方法吗?

或者我应该在 Main.onCreate() 处创建一个静态 Custom1 吗?我试图研究哪种方式最有效,但我不确定。因为 Custom1&Custom2 classes 有大约 22 个变量在一起,我想避免从 Custom1 Class 复制和粘贴到 Singleton Class.

通过活动传递 Custom1 的实例听起来不是个好主意,因为我需要从服务中访问数据。

有人给点建议吗?我知道这几乎是一个经常被问到的问题,但是有了赞成的回答 "It depends" 我只是想明确说明我的需求。

谢谢!

public class Custom1{
 private String Var1;
 private Int Var2;
 private Custom2 Var3;
 private String var4;

 public void Custom1(){ }

//getter & setter
}

public class Custom2{
 private double Var5;

 public void Custom2(){}

//getter & setter
}

在单例中存储数据是这种情况下的最佳方法。 SharedPreferences 存储在磁盘上,因此是不必要的开销。到达最终 activity 后,您可以通过检查服务可以设置的一些标志来检查单例是否已完成加载。如果是则写入 SQL 否则创建一个广播侦听器,它将侦听服务完成任务然后写入 SQL。