SharedPreferences存储对象
最近用到了SharedPreferences,简单的String,int 什么都很很简单,但是我要存储的是一个对象啊,看提供的方法只能存储一些简单的数据类型,这个时候我就犯迷糊了。到处查资料最后解决了,贴出方法给共享。
这是存储
public void save(OAuthV1 oAuth_1) { SharedPreferences preferences = getSharedPreferences("base64", MODE_PRIVATE); // 创建字节输出流 ByteArrayOutputStream baos = new ByteArrayOutputStream(); try { // 创建对象输出流,并封装字节流 ObjectOutputStream oos = new ObjectOutputStream(baos); // 将对象写入字节流 oos.writeObject(oAuth_1); // 将字节流编码成base64的字符窜 String oAuth_Base64 = new String(Base64.encodeBase64(baos .toByteArray())); Editor editor = preferences.edit(); editor.putString("oAuth_1", oAuth_Base64); editor.commit(); } catch (IOException e) { // TODO Auto-generated } Log.i("ok", "存储成功"); }
然后是读取
public OAuthV1 read() { OAuthV1 oAuth_1 = null; SharedPreferences preferences = getSharedPreferences("base64", MODE_PRIVATE); String productBase64 = preferences.getString("oAuth_1", ""); //读取字节 byte[] base64 = Base64.decodeBase64(productBase64.getBytes()); //封装到字节流 ByteArrayInputStream bais = new ByteArrayInputStream(base64); try { //再次封装 ObjectInputStream bis = new ObjectInputStream(bais); try { //读取对象 oAuth_1 = (OAuthV1) bis.readObject(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (StreamCorruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return oAuth_1; }
浙公网安备 33010602011771号