SharedPreference的数据存储格式为,SharedPreferences与普通内存文件存取数据有什么不同?
如何解决写爬虫IP受阻的问题?立即使用。
本教程运行环境:windows7系统,java10版本10,Dell G3电脑。
在日常开发中,我们经常需要保存数据。Android中常用的存储方式有SQLite、sharedPreferences等。当然,它们也有自己的应用场景。前者适合保存更多的数据,后者倾向于保存用户偏好,比如某个复选框的选择状态、用户的登录状态、配置信息、记住密码的功能等。所有这些都以键值对的形式读取文件。
但是每次存储数据都要提供一个密钥。如果要存储多个数据,不是要写多个键吗?例如,如果我们想保存一个用户的登录信息,比如用户的昵称、个人签名、登录时间..................答案是肯定的~
Java类库中提供的byte iostream可以很容易的帮助我们完成任意类型到字符串的可逆转换,然后保存在Share中~
SharedPreferences只能存储简单类型的数据,比如四种基本类型(int、float、long、boolean) String。如果需要访问复杂的数据类型,比如类或者图像,就需要对这些数据进行编码,通常是将其转换为Base64编码,然后将转换后的数据以字符串的形式保存在XML文件中。
简单使用:
可以保存的类型:
字符串、整型、浮点型、长整型、布尔型
//获取sharedPreferences对象
shared preferences shared preferences=getshared preferences( zjl ,上下文。MODE _ PRIVATE);
//获取编辑器对象
SharedPreferences。editor editor=shared preferences . edit();//获取编辑器
//存储键值对
Editor.putString(名字,周杰伦);
editor.putInt(年龄,24);
editor.putBoolean(isMarried ,false);
editor.putLong(身高,175 l);
editor.putFloat(weight ,60f);
editor.putStringSet(where ,set);
//提交
editor . commit();//提交更改
shared preferences shared preferences=getshared preferences( zjl ,上下文。MODE _ PRIVATE);
//getString()的第二个参数是默认值。如果首选项中不存在该键,它将返回默认值。
string name=shared preferences . getstring( name , );
int age=shared preferences . getint( age ,1);
存储对象:
方法一:fastJson/Gson/Jackson将对象转换成字符串,然后保存。
方法二:ObjectOutputStream将对象转换成流,base64将流转换成字符串,然后保存。
包com . example . drag GridView;
/**
*由管理员于2017/6/19创建。
*/
导入Android . app . activity;
导入Android . content . context;
导入Android . content . shared preferences;
导入Android . util . base64;
导入Java . io . bytearray inputstream;
导入Java . io . bytearrayoutputstream;
导入Java . io . io exception;
导入Java . io . objectinputstream;
导入Java . io . object output stream;
导入Java . io . serializable;
/**
* SharedPreferences工具类,可以保存object对象
*/
公共类SharedPreferenceUtil {
/**
*存储实体类和任意类型。
*
* @param context上下文对象
* @param key
* @param obj
*/
公共静态void putBean(上下文上下文,字符串键,对象对象){
If(可序列化的obj实例){//obj必须实现可序列化的接口,否则会出错。
尝试{
ByteArrayOutputStream baos=new ByteArrayOutputStream();
ObjectOutputStream oos=新的object output stream(baos);
OOS . writeobject(obj);
String string64=新字符串(Base64.encode(baos.toByteArray(),0));
SharedPreferences。editor editor=getSharedPreferences(上下文)。edit();
editor.putString(key,string64)。commit();
} catch (IOException e) {
e。printstacktrace();
}
}否则{
抛出新的IllegalArgumentException("obj必须实现可序列化”);
}
}
公共静态对象getBean(上下文上下文,字符串键){
对象obj=null
尝试{
string base64=getSharedPreferences(上下文)。getString(key, );
if(base64。等于(“”){
返回空
}
byte[]base64字节=base64。解码(base64。getbytes(),1);
bytearray inputstream Bais=new bytearray inputstream(base 64 bytes);
ObjectInputStream ois=新的ObjectInputStream(Bais);
obj=ois。read object();
} catch(异常e) {
e。printstacktrace();
}
返回目标文件
}
}
参考:
使用的使用保存目录数据,其实可以保存目标对象
机器人开发笔记——共享首选项存储实体类以及任意类型
机器人数据持久化之的使用
AIDL支持的数据类型
所有基础类型(字节/短整型/长整型/浮点型/双精度型/布尔型/字符型等)
字符串,列表,映射,字符序列等类
其他接口描述语言接口类型
所有可包装的的类
bundle可传递数据类型:
1、字节/短整型/长整型/浮点型/双精度型/布尔型/字符型等八种基本类型或它们对应的数组
2、字符串、字符序列或对应的数组,也可以是对象()或对象数组。
3、Bundle.putSerializable(Key,Object);//实现可序列化接口的对象
4、Bundle.putParcelable(Key,Object);//实现可包装的接口的对象
intent可传递数据类型:
意图传递类型(abcd)
答:可序列化
乙、字符序列
丙、可包装
d、捆绑
1、八种基本数据类型及其对应数组
2、字符串/字符序列及其对应数组
3、可包装及其对应数组/可序列化
4、捆绑销售/意向
相关免费学习推荐:java基础教程以上就是共享参数可以存储什么数据类型的详细内容,更多请关注我们其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。