使用sharedpreferences可以存储什么数据类型?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
可保存的类型:
string,int,float,long,boolean
//获取sharedPreferences对象
SharedPreferences sharedPreferences = getSharedPreferences("zjl", Context.MODE_PRIVATE);
//获取editor对象
SharedPreferences.Editor editor = sharedPreferences.edit();//获取编辑器
//存储键值对
editor.putString("name", "周杰伦");
editor.putInt("age", 24);
editor.putBoolean("isMarried", false);
editor.putLong("height", 175L);
editor.putFloat("weight", 60f);
editor.putStringSet("where", set);
//提交
editor.commit();//提交修改
SharedPreferences sharedPreferences = getSharedPreferences("zjl", Context.MODE_PRIVATE);
//getString()第二个参数为缺省值,如果preference中不存在该key,将返回缺省值
String name = sharedPreferences.getString("name", "");
int age = sharedPreferences.getInt("age", 1);
方法一:fastJson/Gson/Jackson将对象转换成字符串,然后再保存。
方法二:ObjectOutputStream将对象转化成流,base64将流转成字符串,然后再保存。
package com.example.draggridview;
/**
* Created by Administrator on 2017/6/19.
*/
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.util.Base64;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
/**
* SharedPreferences工具类,可以保存object对象
*/
public class SharedPreferenceUtil {
/**
* 存放实体类以及任意类型
*
* @param context 上下文对象
* @param key
* @param obj
*/
public static void putBean(Context context, String key, Object obj) {
if (obj instanceof Serializable) {// obj必须实现Serializable接口,否则会出问题
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(obj);
String string64 = new String(Base64.encode(baos.toByteArray(), 0));
SharedPreferences.Editor editor = getSharedPreferences(context).edit();
editor.putString(key, string64).commit();
} catch (IOException e) {
e.printStackTrace();
}
} else {
throw new IllegalArgumentException("the obj must implement Serializble");
}
}
public static Object getBean(Context context, String key) {
Object obj = null;
try {
String base64 = getSharedPreferences(context).getString(key, "");
if (base64.equals("")) {
return null;
}
byte[] base64Bytes = Base64.decode(base64.getBytes(), 1);
ByteArrayInputStream bais = new ByteArrayInputStream(base64Bytes);
ObjectInputStream ois = new ObjectInputStream(bais);
obj = ois.readObject();
} catch (Exception e) {
e.printStackTrace();
}
return obj;
}
}
使用SharedPreference保存list数据,其实可以保存Object对象
Android开发笔记——SharedPreferences 存储实体类以及任意类型
Android数据持久化之SharedPreference
所有基础类型(byte/short/int/long/float/double/boolean/char 等)
String,List,Map,CharSequence等类
其他AIDL接口类型
所有Parcelable的类
1、byte/short/int/long/float/double/boolean/char等八种基本类型或它们对应的数组
2、String、charsequence或对应的数组,也可以是对象()或对象数组。
3、Bundle.putSerializable(Key,Object); //实现Serializable接口的对象
4、Bundle.putParcelable(Key, Object); //实现Parcelable接口的对象
intent传递类型(abcd)
A、Serializable B、charsequence C、Parcelable D、Bundle
1、八种基本数据类型 及其对应数组
2、String/Charsequence 及其对应数组
3、Parcelable 及其对应数组 /Serializable
4、bundle/intent
关于使用sharedpreferences可以存储什么数据类型问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。