如何有效地在活动之间传递数据?

时间:2014-12-11 03:05:53

标签: android android-intent

我不喜欢intent在活动之间传递数据的方式。这导致更多的重复代码。从活动A-> B和从B-> C播放数据,并且在一些情况下,C-> D使得代码更容易出错。我想传递原始和非原始数据类型。如何在不影响代码质量的情况下实现这些目标?

2 个答案:

答案 0 :(得分:1)

如果是简单数据,您可以使用SharedPreferences将数据存储在一个活动中,并在另一个活动中读取它。

其他选项是将数据存储在Application类中,但这应该只是存储在共享首选项中的缓存副本,因为应用程序对象可能会在某个时刻被终止。

我所做的是让一个对象成为PersistData类的单例实例,它处理保存和加载(以及Application类中的缓存)。

我使用Dagger注入这个对象,我需要保存/读取数据。

以下是我对相关问题的另一个答案的链接,该问题可以更好地解释我的建议(抱歉,我花了一些时间来搜索这个)

best practice to share global variables between activities

最后你只需要两次调用:

在包含您要发送的数据的活动中,您有类似

的内容
persistData.saveUserId(userId);

在您想要接收数据的活动中,您有以下内容:

String userId = persistData.readUserId();

答案 1 :(得分:0)

您可以使用单例类来存储对象,并通过获取该单例类的实例在其他活动中检索它们。

参考:http://developer.android.com/guide/faq/framework.html#3