离线缓存就是在网络畅通的情况下将从服务器取到的数据保存到本地,在网络断开的时候直接去本地数据显示。这样避免在没有网路的时候进入应用是一片空白。在网上找了很多实现,这里记录了一种。
将网络数据保存到本地:
你可以自己写一个保存数据成本地文件的方法,保存在android系统的任意目录(当然是有权限的才行),但是在这种情况下使用Context的openFileOutput方法最简便也最符合我们的场景,下面的saveObject方法演示了如何用openFileOutput将数据保存在本地的一个文件中:
public static boolean saveObject(Serializable ser, String file) {
FileOutputStream fos = null;
ObjectOutputStream oos = null;
try {
fos = AppContext.getInstance().openFileOutput(file, AppContext.getInstance().MODE_PRIVATE);
oos = new ObjectOutputStream(fos);
oos.writeObject(ser);
oos.flush();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
try {
oos.close();
} catch (Exception e) {
}
try {
fos.close();
} catch (Exception e) {
}
}
}
openFileOutput可以直接获得一个和应用关联的文件路径(在/data/data/<package name>/files下面),然后使用java io中的ObjectOutputStream将 序列化的对象 写入(
writeObject
)到得到的文件中,你可以看到上面的实现过程有两个关键方法:
openFileOutput
、
writeObject
以及调用它们的两个关键对象Context和ObjectOutputStream
。