Android中经常用到保存数据,保存数据大致分为以下几种:通过输入输出流的形式保存、通过缓存保存、通过数据库保存、通过sharedpreference保存;
当然这些存储形式主要是字节(输入输出流)、和基本数据类型;如果要保存对象形式的javabean实体类,甚至是list或者hanshmap,应该怎样存储呢
这里分享几种方式:
1.一种是通过文件读取FileObjectStream对象存储方式存储,写入sd或者内存中
outStreamVideo = new FileOutputStream(path,false);
objectOutputStreamVideo = new ObjectOutputStream(outStreamVideo);
objectOutputStreamVideo.writeObject(List);
这种形式可以保存任何对象的list,也可以是hashmap,甚至是hashmap的list保存,并且可以长期保存,不容易丢失,
使用时再通过
freaderVideo = new FileInputStream(pathvideo);
objectInputStreamVideo = new ObjectInputStream(freaderVideo);
mUploadVideoList = (ArrayList<HashMap<String, String>>) objectInputStreamVideo.readObject();
freaderVideo.close();
获取即可
2.第二种是通过SharedPrefernce存储,你可能会说sharedprefernce只能保存基本的数据类型呀,不用担心,我们用json呀,
我们可以通过json工具将对象转换成jsonString保存下来,下次需要的时候再从里面取出来转换成Object的形式就可以了,
这种方式可以用于用户信息的保存上
使用方式为:
TelUserInfoBean userInfo = JSON.parseObject(JSON.toJSONString(data), TelUserInfoBean.class);
String userinfoString=JSONObject.toJSONString(userInfo);
Preferences.saveUserInfo(userinfoString);
取出方式为:
String userinfoString=Preferences.getUserInfo();
TelUserInfoBean muserinfo=JSON.parseObject(userinfoString, TelUserInfoBean.class);
Prefernce实现:
static SharedPreferences getSharedPreferences() {
return AppCache.getContext().getSharedPreferences("aihelmet", Context.MODE_PRIVATE);
}
private static void saveString(String key, String value) {
SharedPreferences.Editor editor = getSharedPreferences().edit();
editor.putString(key, value);
editor.commit();
}
3.第三种方式是通过ORM对象关系映射数据库的方式存储,使用第三方插件lietpal来存储,这种方式适合于消息存储或者通讯录这种大数据量的客户端存储,这个插件的使用大家可以上网搜索,
主要使用方式为通过litepal.xml进行对象申明,也就是大致有几个表,需要存储的对象表继承自DataSupport
public class Message extends DataSupport{
}
保存时调用:
message.save()
查询调用:
List<UserMessage> messages = DataSupport.where("useridWith = ?", useridwith).find(UserMessage.class);
删除调用:
DataSupport.deleteAll(UserMessage.class, "useridWith = ?", useridwith);
更新调用:
DataSupport.update(TYMessage.class,mcontentvalues,message.id);
4.第四种方式可以使用软引用,通过保存到软引用的缓存种,下次使用时再取出来,这种比较常用于图片的保存,防治内存溢出
暂时只能罗列这几项,当然保存方式还有很多,欢迎指正和追加,一起探讨留言