文章目录

  • 概念理解:
  • getSharedPreferences 方法介绍
  • 使用SharedPreferences保存key-value键值对的步骤如下:
  • 栗子1
  • 栗子2

概念理解:

SharedPreferences 是一个轻量级的存储类,主要是保存一些小的数据,一些状态信息.做软件开发应该都知道,很多软件会有配置文件,里面存放这程序运行当中的各个属性值,由于其配置信息并不多,如果采用数据库来存放并不划算,因为数据库连接跟操作等耗时大大影响了程序的效率,因此我们使用键值这种一一对应的关系来存放这些配置信息。SharedPreferences正是Android中用于实现这中存储方式的技术。

SharedPreferences的使用非常简单,能够轻松的存放数据和读取数据。SharedPreferences只能保存简单类型的数据,例如,String、int等。一般会将复杂类型的数据转换成Base64编码,然后将转换后的数据以字符串的形式保存在 XML文件中,再用SharedPreferences保存。

getSharedPreferences 方法介绍

其中两个参数的意义为

public SharedPreferences getSharedPreferences(String name, int mode) {return mBase.getSharedPreferences(name, mode);
}

name为本组件的配置文件名( 自己定义,也就是一个文件名)

mode为操作模式,默认的模式为0或MODE_PRIVATE,还可以使用MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE

mode指定为MODE_PRIVATE,则该配置文件只能被自己的应用程序访问。
mode指定为MODE_WORLD_READABLE,则该配置文件除了自己访问外还可以被其它应该程序读取。
mode指定为MODE_WORLD_WRITEABLE,则该配置文件除了自己访问外还可以被其它应该程序读取和写入

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

(1)使用SharedPreferences接口的Editor 获得SharedPreferences.Editor 对象editor。
代码实例如下:

private SharedPreferences.Editor editor;

(2)使用Activity类的getSharedPreferences方法获得SharedPreferences对象,其中存储key-value的文件的名称由getSharedPreferences方法的第一个参数指定。
代码实例如下:

private SharedPreferences preferences;
private SharedPreferences.Editor editor;public Sputil(Context context) {preferences = context.getSharedPreferences("com.ihome.za_home.setting", context.MODE_PRIVATE);editor = preferences.edit();
}

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

public void putString(String key, String value) {editor.putString(key, value);editor.commit();
}
public void putBoolean(String key, boolean value) {editor.putBoolean(key, value);editor.commit();
}

(4)通过SharedPreferences.Editor接口的commit方法保存key-value 对。commit方法相当于数据库事务中的提交(commit)操作。
如(3)所示,直接在内部提交了

栗子1

import android.content.Context;
import android.content.SharedPreferences;public class Sputil {private SharedPreferences preferences;private SharedPreferences.Editor editor;public Sputil(Context context) {preferences = context.getSharedPreferences("com.xiaoqinglong.chong", context.MODE_PRIVATE);editor = preferences.edit();}/*** 向SP存入指定key对应的数据* 其中value可以是String、boolean、float、int、long等各种基本类型的值* @param key* @param value*/public void putString(String key, String value) {editor.putString(key, value);editor.commit();}public void putBoolean(String key, boolean value) {editor.putBoolean(key, value);editor.commit();}public void putFloat(String key, float value) {editor.putFloat(key, value);editor.commit();}public void putInt(String key, int value) {editor.putInt(key, value);editor.commit();}public void putLong(String key, long value) {editor.putLong(key, value);editor.commit();}/*** 清空SP里所以数据*/public void clear() {editor.clear();editor.commit();}/*** 删除SP里指定key对应的数据项* @param key*/public void remove(String key) {editor.remove(key);editor.commit();}/*** 获取SP数据里指定key对应的value。如果key不存在,则返回默认值defValue。* @param key* @param defValue* @return*/public String getString(String key, String defValue) {return preferences.getString(key, defValue);}public boolean getBoolean(String key, boolean defValue) {return preferences.getBoolean(key, defValue);}public float getFloat(String key, float defValue) {return preferences.getFloat(key, defValue);}public int getInt(String key, int defValue) {return preferences.getInt(key, defValue);}public long getLong(String key, long defValue) {return preferences.getLong(key, defValue);}/*** 判断SP是否包含特定key的数据* @param key* @return*/public boolean contains(String key){return preferences.contains(key);}
}

栗子2

存放数据信息

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

SharedPreferences settings = getSharedPreferences(“setting”, 0);

(2)、让setting处于编辑状态

SharedPreferences.Editor editor = settings.edit();

(3)、存放数据

editor.putString(“name”,”ATAAW”);
editor.putString(“URL”,”ATAAW.COM”);

(4)、完成提交

editor.commit();

读取数据信息

(1)、获取Preferences

SharedPreferences settings = getSharedPreferences(“setting”, 0);

(2)、取出数据

String name = settings.getString(“name”,”默认值”);
String url = setting.getString(“URL”,”default”);

就介绍到这里了,有什么不理解的或者是小编有错误的地方,都可以在评论区留言,如果对你有益处的话记得收藏哦

Android --- SharedPreferences的详细介绍相关推荐

  1. Android SQLite 数据库详细介绍

    Android SQLite 数据库详细介绍我们在编写数据库应用软件时,需要考虑这样的问题:因为我们开发的软件可能会安装在很多用户的手机上,如果应用使用到了SQLite数据库,我们必须在用户初次使用软 ...

  2. android:inputType 类型详细介绍

    android:inputType 类型详细介绍 //文本类型,多为大写.小写和数字符号. android:inputType="none"//输入普通字符 android:inp ...

  3. Android 文件件详细介绍

    目录列表详细对照表:1..android_secure 是官方app2sd的产物,删了之后装到sd卡中的软件就无法使用了.2..Bluetooth 顾名思义,用蓝牙之后就会有这个.3..mobo 顾名 ...

  4. Android Intent常用方法详细介绍,显示Intent,隐式Intent,调用浏览器,拨号,发短信,传递数据

    Intent介绍 Intent是Android程序中各个组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据.Intent一般用于启动活动,启动服务以及发 ...

  5. Android Data Binding 详细介绍与使用

    构建环境 首先,确保能使用Data Binding,需要下载最新的 Support repository.否则可能报错,如图: 在模块的build.gradle文件中添加dataBinding配置 a ...

  6. android开发 theme,详细介绍了Android主题与风格开发教案(style and theme)

    Android设备和iOS设备的界面风格比较起来,说实话Android的默认UI组件最多只是可以看,绝对比不上iPhone默认组件那么好看和耐看.不过Android系统的开放性很高,我们可以从头到尾改 ...

  7. Android:Fragment详细介绍 使用方法解析

    Fragment Fragment 一.什么是Fragment? 二.为什么要有Fragment? 三.Fragment的特点 四.Fragment的生命周期 五.将fragment添加到Activi ...

  8. Android --- AndroidManifest.xml文件内容详细介绍

    文章目录 1.android:label="@string/app_name" 2. android:icon="@mipmap/ic_launcher"与an ...

  9. Android底层隐私数据,Android Intent传递数据底层分析详细介绍_Android_脚本之家

    Android  Intent传递数据底层分析详细介绍 我们知道在Activity切换时,如果需要向下一个ActivityB传递数据,可以借助Intent对象的putExtra方法. 但是不知各位有没 ...

最新文章

  1. 虚拟人春节搞事情!先在央视《对话》,又跟李玉刚组团除夕出道
  2. linux centos7挂载/dev/sdb硬盘到根目录(根目录扩容新磁盘)
  3. Oracle 中UNDO与REDO的差别具体解释
  4. mouseleave mouseout时候悬浮框不应该消失的时候消失了 css 解决办法
  5. Oracle日期操作函数
  6. python项目代码总结
  7. 提高对邮件的认识,两类邮件都要重视!!(不光有和客户的邮件工作方面的,还有单位的邮件一些联系事项),还有要自己看清楚邮件的全部内容,不要丢三落四!!
  8. 输入课程信息的C语言代码,[源码和文档分享]基于C语言的课程信息管理系统
  9. 这几天可能是长时间关注电脑,眼睛没有得到休息,所以就早上起来眼睛有点通...
  10. 人脸管理服务器修改ip,人脸库管理【可视化】 增/删/改/查 全不怕
  11. 质疑江民电脑保护系统,涉嫌抄袭
  12. 机房重构-panel控件
  13. 晶振对微型计算机的作用,单片机中晶振电路的作用及其常见参数
  14. oracle数据库报12514,Oracle数据库ORA-12514错误的解决办法
  15. C# WPF、Winform中Show()和ShowDialog()区别
  16. VC实现顶层窗口的透明与实现子窗口的透明【重点:子窗口透明处理】
  17. UNI-APP在自定义组件中内嵌H5/Html网页,可自定义webview大小,加载不闪屏
  18. jodaTime 的使用说明
  19. 安娜尔机器人冻结资金设置_安娜尔机器人冻结资金设置如何
  20. 超硬核!史上最好的数据库总结

热门文章

  1. Hasor JDBC 的难关,嵌套事务处理思路
  2. C#中全角与半角的转换
  3. perl正则表达式-1
  4. 宾浪超.何飞玲.相爱(帮别人名字隔字作诗)
  5. 我和我老妈的经典搞笑故事[原创]
  6. 论文笔记:Geo-CNN
  7. Android SDK Manager无法下载包的问题
  8. pythonunicode转为字符串_python中将 \\uxxxx转换为 Unicode字符串
  9. 图的dfs非递归_如何理解恶心的递归
  10. python乒乓球比赛规则介绍_乒乓球比赛规则及活动方案