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

时间:2014-10-04 16:59:50

标签: android android-fragments

我想知道关注,也许有人可以为我解决这个问题:

我有一个应用程序,它最初会在应用程序启动时加载一些json feed。 每个片段都需要这些数据,我的标准方法是在MainActivity中检索它并将它以包的形式传递给我的片段。 缺点:序列化,复杂的Datasync,大量捆绑和分拆代码。

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

1 个答案:

答案 0 :(得分:1)

  

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

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

  

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

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

  

你会如何处理这样一个用例?

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

  

有没有办法持久化和重新加载静态数据,而无需映射所有内容并将其存储到数据库中?

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

正如我在前面的回答中所提到的,您需要制定一个计划来处理缺乏连接或其他无法检索这些Feed的原因。这应该与您的持久性策略相关联。 Internet会更新您的持久存储(并在此过程中更新任何内存中的缓存)。