我不喜欢intent在活动之间传递数据的方式。这导致更多的重复代码。从活动A-> B和从B-> C播放数据,并且在一些情况下,C-> D使得代码更容易出错。我想传递原始和非原始数据类型。如何在不影响代码质量的情况下实现这些目标?
答案 0 :(得分:1)
如果是简单数据,您可以使用SharedPreferences将数据存储在一个活动中,并在另一个活动中读取它。
其他选项是将数据存储在Application类中,但这应该只是存储在共享首选项中的缓存副本,因为应用程序对象可能会在某个时刻被终止。
我所做的是让一个对象成为PersistData类的单例实例,它处理保存和加载(以及Application类中的缓存)。
我使用Dagger注入这个对象,我需要保存/读取数据。
以下是我对相关问题的另一个答案的链接,该问题可以更好地解释我的建议(抱歉,我花了一些时间来搜索这个)
best practice to share global variables between activities
最后你只需要两次调用:
在包含您要发送的数据的活动中,您有类似
的内容persistData.saveUserId(userId);
在您想要接收数据的活动中,您有以下内容:
String userId = persistData.readUserId();
答案 1 :(得分:0)
您可以使用单例类来存储对象,并通过获取该单例类的实例在其他活动中检索它们。