SharedPreference的数据存储格式为,SharedPreferences与普通内存文件存取数据有什么不同-

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: