将数据存储在中心对象中

时间:2011-11-09 13:07:19

标签: android save singleton

我的应用程序严重依赖于来自Web服务的JSON响应。应用程序的所有部分都包含根据这些响应构建的对象,这意味着此数据对于应用程序正常运行非常重要。

目前,每次用户打开应用程序的功能(例如新闻,音乐,图片等)时,都会查询Web服务并使用所需的数据进行响应。然后,该数据被解析并用于向用户显示他们选择的任何内容。 问题是,这个过程对带宽不友好。特别是对于连接速度较慢的手机,加载和解析数据可能需要几秒钟,更不用说下载将要显示的图片。 如果用户关闭该功能,然后再次打开它,则会重新下载并重新解析所有数据。

因此,我想将最常用的数据保存在中心类/对象中。由于在用户使用应用程序时此数据不太可能发生变化,因此应该可以将所需数据保存在某处,以防用户重新打开刚刚关闭的功能。

但是我该怎么做呢?我读过Singletons等,但是如何从20多个不同的类中向Singleton对象添加数据呢?当用户重新打开一个函数时,我将如何检索这些数据并将其添加到新的Intent中(如果甚至可以这样做的话)

2 个答案:

答案 0 :(得分:2)

建议但不一定是最好的方法,我不确定我是否正确解释了您的问题。

你能将它们存储在sql lite数据库中,或者存储在SD卡上吗?

对于音乐和图像,您可以存储数据库中SD卡上项目的路径。

每次应用程序加载或调用“有更改数据”链接时,每次数据更改时都更新数据库?

答案 1 :(得分:0)

我在高分榜的游戏中遇到类似的问题 - 高分榜很大,来自HTTP Get请求的JSON。我用:    - singleton highscore服务,负责缓存本地JSON副本,处理从HTTP等的检索。由于loadfing higscores占用时间,它还执行异步处理并在新的高分可用时触发广播(并且游戏活动在需要时接收它们)    - 用于定时广播的广播接收机,以执行常规的高分数同步

我使用自己的数据绑定库进行JSON数据存储:

https://github.com/ko5tik/jsonserializer