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.第四種方式可以使用軟引用,通過保存到軟引用的緩存種,下次使用時再取出來,這種比較常用於圖片的保存,防治內存溢出
暫時只能羅列這幾項,當然保存方式還有很多,歡迎指正和追加,一起探討留言
