使用SharedPreferences存储对象、图片
来源:互联网 发布:java下载了怎么用 编辑:程序博客网 时间:2024/04/26 06:38
如果要用 SharedPreferences 存取复杂的数据类型(类,图像等),就需要对这些数据进行编码。通常会将复杂类型的数据转换成Base64编码,然后将转换后的数据以字符串的形式保存在XML文件中。
一、SharedPreferences存储对象
1、创建要存储的实体类对象(要序列化)
public class Student implements Serializable{ private String name; private String age; private String address; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; }}
2、存储对象
SharedPreferences sharedPreferences = getSharedPreferences("student", MODE_PRIVATE);SharedPreferences.Editor editor = sharedPreferences.edit();ByteArrayOutputStream baos = new ByteArrayOutputStream();Student student = new Student();student.setName("谁是谁");student.setAge("23");student.setAddress("水泥星");try { ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeObject(student); String base64Student = Base64.encodeToString(baos.toByteArray(), Base64.DEFAULT); editor.putString("student", base64Student); editor.apply(); oos.close(); } catch (IOException e) { e.printStackTrace(); }
3、取对象
SharedPreferences sharedPreferences = getSharedPreferences("student", MODE_PRIVATE);String studentString = sharedPreferences.getString("student", "");byte[] base64Student = Base64.decode(studentString, Base64.DEFAULT);ByteArrayInputStream bais = new ByteArrayInputStream(base64Student);try { ObjectInputStream ois = new ObjectInputStream(bais); Student student = (Student) ois.readObject(); Log.e("------------->", "" + student.getAddress() + student.getAge() + student.getName()); } catch (Exception e) { e.printStackTrace(); } }
二、SharedPreferences保存图片
1、存
SharedPreferences sharedPreferences = getSharedPreferences("student", MODE_PRIVATE);SharedPreferences.Editor editor = sharedPreferences.edit();ByteArrayOutputStream baos2 = new ByteArrayOutputStream();((BitmapDrawable) getResources().getDrawable(R.drawable.lanbojini)).getBitmap().compress(Bitmap.CompressFormat.JPEG, 100, baos2);String imageBase64 = Base64.encodeToString(baos2.toByteArray(), Base64.DEFAULT);editor.putString("productImg", imageBase64);editor.commit();
2、取
iv_prod_img = (ImageView) findViewById(R.id.iv_prod_img); byte[] imagByte = Base64.decode(sharedPreferences.getString("productImg",""), Base64.DEFAULT); ByteArrayInputStream bais2 = new ByteArrayInputStream(imagByte); iv_prod_img.setImageDrawable(Drawable.createFromStream(bais2, "imagByte"));
参考博客
0 0
- 使用SharedPreferences存储对象、图片
- SharedPreferences存储图片对象与获取
- Android使用Gson和SharedPreferences存储对象
- Android 中使用SharedPreferences存储通用对象
- 使用SharedPreferences保存图片与对象
- android SharedPreferences 存储对象
- SharedPreferences 存储对象
- android SharedPreferences 存储对象
- android SharedPreferences 存储对象
- SharedPreferences 存储对象
- SharedPreferences 存储对象
- android SharedPreferences 存储对象
- SharedPreferences存储的使用
- 使用SharedPreferences存储数据
- 使用SharedPreferences存储数据
- 使用SharedPreferences存储数据
- SharedPreferences存储使用
- 使用SharedPreferences存储数据
- iOS处理系统相册裁剪后图片
- Java实现生产者/消费者模式
- Java开发环境搭建
- python networkx 绘制网络图简介
- java 对象转map
- 使用SharedPreferences存储对象、图片
- 【ubuntu】如何启动、关闭和设置ubuntu防火墙
- MySQL 导入数据
- HDU 4417 Super Mario (树状数组、离线处理)
- Splash界面显示版本号及连网检查更新
- 编译安装php时 出现的问题总结
- python,pip多版本问题
- android之OkHttp简单使用,键值对,json数据,文件上传。
- UTF-8编码占几个字节?