静态应用程序范围数据存储VS按bundle传递数据



我想知道以下内容,也许有人可以帮我澄清:

我有一个应用程序,它最初在应用程序启动时加载一些json提要。每个片段都需要这些数据,对我来说,标准的方法是在MainActivity中检索这些数据,并将其捆绑传递给我的片段。缺点:串行化、复杂的数据同步、大量的捆绑和分解代码。

把数据放在某个全局静态DataSource类中,然后从片段/活动中访问它,怎么样?这将非常简单——然而,它似乎有一个缺点:当应用程序在后台停留一段时间后恢复片段时,似乎所有全局静态数据都丢失了。你会如何处理这样的用例?有没有一种方法可以持久化和重新加载静态数据,而不必映射所有内容并将其存储到DB中?

我有一个应用程序,它最初在应用程序启动时加载一些json提要。

没有人拥有普遍的、永久的连接。因此,您需要一种持久性策略来处理用户想要使用您的应用程序但由于任何原因无法连接到服务器的情况。

当应用程序在后台停留一段时间后恢复片段时,似乎所有全局静态数据都丢失了。

这是因为您的进程已终止,并且您的JSON不属于您保存的实例状态。大模型数据,比如JSON,通常都不是您想要的保存实例状态的一部分。

你会如何处理这样的用例?

使用内部存储上的文件或数据库作为后备存储。静态数据成员是此类持久存储的缓存,仅此而已。

有没有一种方法可以持久化和重新加载静态数据,而不必映射所有内容并将其存储到DB中?

您已经有了JSON。如果没有其他内容,请将其写入文件。

正如我前面回答的那样,您需要有一个计划来处理缺乏连接或无法检索这些提要的其他原因。这应该与你的坚持策略相结合。互联网会更新你的持久存储(同时还会更新任何内存缓存)。

最新更新