我有一个包含大量数据的ListView。
第一次加载时,我从Webservice中加载所有数据。现在我想将数据缓存起来,以便下次打开页面时,可以从缓存中获取数据,而不是再次查询Webservice。
我该如何做到这一点?
第一次加载时,我从Webservice中加载所有数据。现在我想将数据缓存起来,以便下次打开页面时,可以从缓存中获取数据,而不是再次查询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();
objectOutputStream.writeObject(followers);
存储对象,使用 ArrayList< FollowerInfo> followers = (ArrayList<FollowerInfo>)objectInputStream.readObject();
读取它。 - fardjad您可以通过将通过Web服务获得的数据保存到相应的SQLite数据库中来实现此操作。如果您想获取比数据库中最后一条记录更新的数据,则应在SharedPreferences文件中保存一个键值。例如:
我想从Web服务获取所有日历事件,
今天用户仅访问了1号到10号事件的1月份事件(首次通过Web服务获得这些事件,本地存储在SQLite数据库中,然后使用光标显示)。
明天,一旦用户加载应用程序,已检索到的数据将从SQLite数据库(“缓存”)中加载,并且用户只会通过Web服务获取比10更新的事件;并重复前一天的过程(即将检索到的实体存储在SQLite DB中,然后从1到“x”全部显示它们)。
在这种情况下,您将事件1到10存储在数据库中,并将“11”存储在共享首选项中,以便您知道下一批要获取的实体的起始点。希望我能指导您。
看一下Android上可用的存储选项:http://developer.android.com/guide/topics/data/data-storage.html
祝一切顺利 :)
你的情况类似于这个问题:
如果你想要保留信息的时间超过应用程序的生命周期,那么你必须决定是否使用SQL数据库,否则适配器就可以了。
在SDK包的示例中提供了Api Demos,其中有几个使用ListAdapters的列表示例。例如List5.java。