2015-07-28 77 views
-1

我有2个数据类来存储一些值。第一类(Custom1)有一个类型为Custom2的变量。单身或静态类

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

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

要填充Var3(类型Custom2),我想实现一项服务,因为数据是从Internet获取的。 (在Activity 1中调用 - >在用户填充活动2中的数据时获取数据的时间 - >在Activity3的末尾存储在SQL中的数据)

现在我考虑实现一个将所有数据写入3个活动和服务)以及哪些值最后存储在SQL中。这是做这件事的最好方法吗?

或者我应该只是在Main.onCreate()创建一个静态Custom1?我试图研究哪种方式最好,但我不确定。由于Custom2类共有约22个变量,因此我想避免将Custom1类粘贴到Singleton类。

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

有人提示?我知道这几乎是一个常被问到的问题,但有利于回答“这取决于”我只是试图让我的需求明确。

谢谢!

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 
} 
+0

学习观察者和可观察的实现 – Sheychan

+0

这可能不会回答你的问题,但你有没有考虑使用'SharedPreferences'? – dotvav

+0

还没有。这用作缓存,因此我没有考虑共享首选项,但它可能是一个选项。我会试一试 - 在SharedPreferences而不是对象中存储和检索数据时是否有任何性能问题? 谢谢Sheychan,我很久以前听说过观察员,我确定看看他们。 –

回答

0

以单例存储数据是此方案的最佳方法。 SharedPreferences存储在磁盘上,因此不必要的开销。一旦你到达最后的活动,你可以通过检查服务可以设置的一些标志来检查singleton是否完成加载。如果是,那么写入SQL,否则创建一个广播侦听器,它将监听完成任务的服务,然后写入SQL。

+0

好的,听起来不错。创建单例 - 我可以以某种方式引用自定义类(例如扩展或事端),还是仅仅复制并粘贴变量定义和getter/setter方法(以及创建像private构造函数等其他方法)? –

+0

您可以使用自定义类本身,无需扩展任何内容。 Singleton可以是任何类,它的形成方式只能通过将构造函数设置为私有并多次使用该实例来创建实例。 – Shakti

+0

对,但我也想使用这个类,当我从SQL(Class =日记条目; SQL =许多日记条目)检索数据 - 并且因为我想存储不同的条目到ArrayList ,我还需要一个非 - 班级的单人副本,还是我错了? –