• android SharedPreferences的用法


      之前做应用时碰到这样一个问题:在“A” Activity 要与 “B” Activity的Fragment进行通信传值,但是忽然发现无法拿到B中Fragment的Handler,又不能发送广播,短暂的思考之后想到了SharedPreferences这个轻型的数据存储方式。

      SharedPreferences的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息,用Sqlite数据库来存放并不划算,因为数据库连接跟操作等耗时大大影响了程序的效率。其存储位置在/data/data/<包名>/shared_prefs目录下。

      另外SharedPreferences只能保存简单类型的数据,例如,String、int等。一般会将复杂类型的数据转换成Base64编码,然后将转换后的数据以字符串的形式保存在 XML文件中,再用SharedPreferences保存。

      使用SharedPreferences保存key-value对的步骤如下:

      (1)使用Activity类的getSharedPreferences方法获得SharedPreferences对象,其中存储key-value的文件的名称由getSharedPreferences方法的第一个参数指定,第二个参数指定访问应用程序私有文件的权限。

      (2)使用SharedPreferences接口的edit获得SharedPreferences.Editor对象。

      (3)通过SharedPreferences.Editor接口的putXxx方法保存key-value对。其中Xxx表示不同的数据类型。例如:字符串类型的value需要用putString方法。

      (4)通过SharedPreferences.Editor接口的commit方法保存key-value对。commit方法相当于数据库事务中的提交(commit)操作。

                                  存放数据信息,步骤如下:

      a、打开Preferences,名称为setting,如果存在则打开它,否则创建新的Preferences

    SharedPreferences userSettings = getSharedPreferences("setting", 0);

      b、让setting处于编辑状态

    SharedPreferences.Editor editor = userSettings.edit();

      c、存放数据

    editor.putString("name","ATAAW");
    editor.putString("URL","ATAAW.COM");

      d、完成提交

    editor.commit();

                                  读取数据信息,步骤如下:

      a、获取Preferences

    SharedPreferences userSettings= getSharedPreferences("setting", 0);

      b、取出数据

    String name = userSettings.getString("name","默认值");
    String url = userSettings.getString("URL","default");

      以上就是Android中SharedPreferences的具体使用方法。

      注意:只顾着说存取的方法了,补充一点哈,那就是删除和清空操作,如下:

      a、清除指定数据

    SharedPreferences.Editor editor = userSettings.edit();
    editor.remove("KEY");
    editor.commit();

      b、清空数据

    SharedPreferences.Editor editor = userSettings.edit();
    editor.clear();
    editor.commit();

      注意:如果在 Fragment 中使用SharedPreferences 时,需要放在onAttach(Activity activity)里面进行SharedPreferences 的初始化,否则会报空指针 即 getActivity()会可能返回null !

      < 完 >

  • 相关阅读:
    Postmanapi接口自动化局限性
    爱加密加固产品原理分析_定制版
    白话文理解DCT离散余弦变换
    mysql like使用预编译
    【Jenkins】jenkins控制台/生成的日志文件 中文乱码
    【Python】连接Linux并执行命令
    【Java】时间转换(可用于计算耗时场景)
    【Java】List去重 / 删除ArrayList中重复元素,保持顺序 / 提取两个list中不同的元素
    【Java】读取文本文件
    【Python】文件转码/编码/解码/utf8
  • 原文地址:https://www.cnblogs.com/fly-allblue/p/3792232.html
Copyright © 2020-2023  润新知