5

我有一个包含大量数据的 ListView。
第一次,我从 Web 服务加载所有数据。

现在我想缓存该数据,这样,如果我要再次打开该页面,我可以从缓存中获取数据,而不是再次查询 Web 服务。

我怎么做?。

4

3 回答 3

12

我假设您将从WebService可序列化对象中检索到的数据存储(正如您在编辑之前在问题中所述。)

您可以将可序列化对象存储到文件中并稍后加载它们:

店铺:

FileOutputStream fileOutputStream = yourContext.openFileOutput(fileName, Context.MODE_PRIVATE);
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(yourObject);
objectOutputStream.close();

加载:

FileInputStream fileInputStream = yourContext.openFileInput(fileName);
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
Object yourObject = (Object)objectInputStream.readObject();
objectInputStream.close();
于 2013-03-01T09:39:18.370 回答
0

您可以通过将通过 Web 服务获得的数据保存到相应结构化的 SQLite 数据库中来做到这一点。如果您想获得比数据库中最后一条记录更新的数据,那么您应该在 SharedPreferences 文件中保存一个键值。例子:

我想从网络服务中获取所有日历事件,

今天,用户只从事件号访问了一月份的事件。1 到事件编号。10(首次通过web服务获取,本地存储在SQLite数据库中,然后使用游标显示)。

明天,一旦用户加载应用程序,已经检索到的数据将从 SQLite 数据库(“缓存”)加载,用户将只能通过 Web 服务获取 10 个以上的事件;并重复前一天的过程(即将检索到的实体存储在 SQLite DB 中,然后从 1 到“x”全部显示)。

在这种情况下,您将事件 1 到 10 存储在数据库中,并将“11”存储在您的共享首选项中,以便您知道下一批要获取的实体的起点。我希望我能指导你。

查看 Android 上可用的存储选项:http: //developer.android.com/guide/topics/data/data-storage.html

祝一切顺利 :)

于 2013-03-01T09:33:16.490 回答
0

你的情况是这样的:

如何在android中缓存listview数据?

如果您想将信息保存得比应用程序的生命周期更长,您必须决定是否要使用 SQL 数据库,否则适配器就可以了。

在 SDK 包的 Samples 提供的 Api Demos 中,有几个使用 ListAdapters 的 List 示例。例如 List5.java。

于 2013-03-01T09:35:32.417 回答