使用缓存减少读取数据库次数,第一次读取数据库将数据保存在缓存中,后面直接从缓存中读取,跳过数据库,可以大大加快读取速度。
一.保存到缓存
SharedPreferences share = getSharedPreferences(name, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = share.edit();
初始化Set<String>,一定要hanshset,不然会是无序,而且如果add时数据已经存在会闪退
Set<String> departments = share.getStringSet(name, new HashSet<String>());
//data是读取数据库得到的数据(list类型)
for(int i=0;i<data.size();i++){
//如果set中没有改数据则保存下来
if(!departments.contains(data.get(i).getSubDepartment_name()))
departments.add(data.get(i).getSubDepartment_name());
}
editor.putStringSet(name,departments);
editor.apply();
二.读取缓存
SharedPreferences share = getSharedPreferences(name, Context.MODE_PRIVATE);
Set<String> departments = null;
//从sharedPreferences中读取set<String>
departments = share.getStringSet(name,null);
//判断缓存中是否已经存在
if(departments!=null){
//将Set<String>转换成数组
String[] item = (String[]) departments.toArray(new String[departments.size()]);
List<subDepartmentBean> data = new ArrayList<>();;
for (int j = 0; j < item.length; j++){
subDepartmentBean bean = new subDepartmentBean();
bean.setSubDepartment_name(item[j]);
//保存到list中
data.add(bean);
}
//通过adapter改变前端viewlist
listView.setAdapter(new subDepartmentAdapter(data, AppointmentActivity.this));
}else{
//缓存中没有数据,读取数据库
}