【发布时间】:2020-07-11 18:31:32
【问题描述】:
我正在尝试将服务器的缓存响应保存一段时间。
有下一个数据要保存在缓存中:我有一个List<ProgrammeItem>,我从服务器获取。用户在工作时,最多可以下载 ~230 个List<ProgrammeItem>(但达到这个数量是不现实的,估计是 10-50 个)。
ProgrammeItem oblect 包括字符串、int、int[]。
这就是我保存和获取上次下载的List<ProgrammeItem>:
//saving / getting Programme items
public boolean saveObject(List<ProgrammeItem> obj) {
final File suspend_f=new File(android.os.Environment.getExternalStorageDirectory(), "test");
FileOutputStream fos = null;
ObjectOutputStream oos = null;
boolean keep = true;
try {
fos = new FileOutputStream(suspend_f);
oos = new ObjectOutputStream(fos);
oos.writeObject(obj);
} catch (Exception e) {
keep = false;
Log.e("catching exception ", "" + e.getMessage() + ";;;" + e);
} finally {
try {
if (oos != null) oos.close();
if (fos != null) fos.close();
if (keep == false) suspend_f.delete();
} catch (Exception e) { /* do nothing */ }
}
return keep;
}
public List<ProgrammeItem> getObject(Context c) {
final File suspend_f=new File(android.os.Environment.getExternalStorageDirectory(), "test");
List<ProgrammeItem> simpleClass= null;
FileInputStream fis = null;
ObjectInputStream is = null;
try {
fis = new FileInputStream(suspend_f);
is = new ObjectInputStream(fis);
simpleClass = (List<ProgrammeItem>) is.readObject();
} catch(Exception e) {
String val= e.getMessage();
} finally {
try {
if (fis != null) fis.close();
if (is != null) is.close();
} catch (Exception e) { }
}
return simpleClass;
}
这就是我在活动中保存和获取对象的方式:
PI = new ProgrammeItem();
List<ProgrammeItem> programmeItems = new ArrayList<>();
...
//filling programmeItems with data from server
...
boolean result = PI.saveObject(programmeItems); //Save object
ProgrammeItem m = new ProgrammeItem();
List<ProgrammeItem> c = m.getObject(getApplicationContext()); //Get object
问题是:我怎样才能保存很多我的对象而不是只保存一个?
我想我应该做一些类似public boolean addObjectsInCache(List<ProgrammeItem> obj) 的事情来添加对象,而不是覆盖它们。
并将get方法更改为public List<ProgrammeItem> getObject(Context c, String id),其中id将是唯一标识符,它将包含在每个List<ProgrammeItem>中的每个ProgrammeItem中。
我说的对吗?我怎样才能做到这一点?也许你会告诉我处理对象和缓存的另一种方式?
【问题讨论】:
标签: android arrays object caching