1.SharedPreferences介绍

SharedPreferences,它是一个轻量级的配置文件类,用于保存软件配置参数. 采用xml文件形式存储在/data/data/包名/shared_prefs/下

优点在于:

  • 轻量级,以键值对的方式进行存储,使用方便,易于理解
  • 程序卸载后会也会一并被清除,不会残留信息

缺点在于:

  • 不支持跨多个进程使用
  • 键值数据如果过多,会导致界面卡顿

2.如何获取SharedPreferences

2.1 通过Context .getSharedPreferences()方法

public SharedPreferences getSharedPreferences(String name, int mode);
//name:指定文件名称
//mode: 可以填入MODE_PRIVATE(文件只能由调用应用程序访问)、
//MODE_APPEND(追加内容模式)、MODE_WORLD_READABLE(文件支持所有人可读)、MODE_WORLD_WRITEABLE(文件支持所有人可写)

2.2 通过Activity 类中的 getPreferences()方法

public SharedPreferences getPreferences(int mode);
//mode: 可以填入MODE_PRIVATE(文件只能由调用应用程序访问)、MODE_APPEND(追加内容模式)、MODE_WORLD_READABLE(文件支持所有人可读)、MODE_WORLD_WRITEABLE(文件支持所有人可写)
//生成的配置文件名字会默认将当前活动的类名作为文件名.比如在MainActivity类下使用的,则会生成MAinActivity.xml

2.3 通过PreferenceManager中的静态public getDefaultSharedPreferences()方法

public static SharedPreferences getDefaultSharedPreferences(Context context);
//mode会自动设置为MODE_PRIVATE(文件只能由调用应用程序访问)
//生成的配置文件名字会默认将包名作为文件名.

PS:后面示例会演示。

3.如何通过SharedPreferences来读写配置参数

通过下面方法来进行读操作:

上面的第二个参数defValue:表示默认值,如果key值未找到,则将defValue默认值返回过来

通过Editor edit()成员方法来获取Editor类来实现写操作,如下所示:

Editor类下的常用方法有:

Editor putInt(String key, int value); //向key键里写入int类型的值
Editor putString(String key, String value); //向key键里写入String类型的值
Editor putStringSet(String key, Set<String> values); //向key键里写入Set类型的值
boolean commit(); //提交数据,写入io

4.使用3种方法生成SharedPreferences配置文件示例

写MainActivity.java的onCreate():

public class MainActivity extends Activity {

    protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); SharedPreferences sp1 = MainActivity.this.getSharedPreferences("info1", MODE_PRIVATE);
//写入数据
Editor edit1 = sp1.edit();
edit1.putString("name", "test1");
edit1.commit();
//读取数据
Log.v("MainActivity","sp1: "+sp1.getString("name", "")); SharedPreferences sp2 = MainActivity.this.getPreferences(MODE_PRIVATE);
//写入数据
Editor edit2 = sp2.edit();
edit2.putString("name", "test2");
edit2.commit();
//读取数据
Log.v("MainActivity","sp2: "+sp1.getString("name", "")); SharedPreferences sp3 = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
//写入数据
Editor edit3 = sp3.edit();
edit3.putString("name", "test3");
edit3.commit();
//读取数据
Log.v("MainActivity","sp3: "+sp1.getString("name", ""));
}

运行后,可以看到在data/data/com.example.sdreadWrite/shared_prefs下自动生成了3个xml文件:

  • info1.xml: 通过MainActivity.this.getSharedPreferences("info1", MODE_PRIVATE);实现的
  • MainActivity.xml: 通过MainActivity.this.getPreferences(MODE_PRIVATE);实现的
  • com.example.sdreadWrite_preferences.xml: 通过PreferenceManager.getDefaultSharedPreferences(MainActivity.this);实现的

打开info1.xml试试:

打开log打印(可以看到读出来的内容和XML配置一样):

10.Android-SharedPreferences使用的更多相关文章

  1. Android SharedPreferences(数据存储,需掌握)

    1.SharePrefences类介绍 SharedPreferences 类提供了一个通用框架,以便您能够保存和检索原始数据类型的永久性键值对. 您可以使用 SharedPreferences 来保 ...

  2. Android SharedPreferences中apply和commit的效率差距

    Android SharedPreferences中apply和commit的效率差距 经常看到它俩的速度有差别,apply和commit.到底差距多少,下面做一个统计.   apply commit ...

  3. Android SharedPreferences一般的读写 的用法。

    Android SharedPreferences一般用于轻量级的数据存储,比如用户名和密码等. package com.lixu.testsharepreferences; import andro ...

  4. 2016 Top 10 Android Library

    过去的 2016 年,开源社区异常活跃,很多个人与公司争相开源自己的项目,让人眼花缭乱,然而有些项目只是昙花一现,有些项目却持久创造价值,为开发者提供了极大的便利,这些终究由时间来判断.今天,我就来整 ...

  5. android SharedPreferences介绍

    SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中重载窗口状态onSaveInstanceState保存一般使用 ...

  6. android: SharedPreferences实现记住密码功能

    既然是实现记住密码的功能,那么我们就不需要从头去写了,因为在上一章中的最佳实 践部分已经编写过一个登录界面了,有可以重用的代码为什么不用呢?那就首先打开 BroadcastBestPractice 项 ...

  7. android SharedPreferences 存储对象

    我们知道SharedPreferences只能保存简单类型的数据,例如,String.int等. 如果想用SharedPreferences存取更复杂的数据类型(类.图像等),就需要对这些数据进行编码 ...

  8. Android SharedPreferences公共类sharedhelper

    SimpAndroidFarme是近期脑子突然发热想做的android快速开发的框架,目标是模块化 常用的控件,方便新手学习和使用.也欢迎老鸟来一起充实项目:项目地址 sharedpreference ...

  9. Android SharedPreferences存储

    原创文章,转载请注明出处:http://www.cnblogs.com/baipengzhan/p/Android_SharedPreferences.html 一 概念 SharedPreferen ...

  10. Android——SharedPreferences

    SharedPreferences是一种轻型的Android数据存储方式,用来保存应用的一些常用配置. 实现SharedPreferences存储的步骤如下: 1.根据Context获取SharedP ...

随机推荐

  1. 6、python基本数据类型之序列类型

    前言:python的基本数据类型可以分为三类:数值类型.序列类型.散列类型,本文主要介绍序列类型及其通用操作. 一.序列类型 1)字符串(str):用单引号('),双引号("),三引号(三单 ...

  2. 创建模仿存储库 Making a Mock Repository 精通ASP-NET-MVC-5-弗瑞曼 Listing 7-5

  3. 51Nod 1238 最小公倍数之和V3

    题目传送门 分析: 现在我们需要求: \(~~~~\sum_{i=1}^{n}\sum_{j=1}^{n}lcm(i,j)\) \(=\sum_{i=1}^{n}\sum_{j=1}^{n}\frac ...

  4. 用JAVA分别实现WebSocket客户端与服务端

    最近公司在搞一个项目刚好需要用到WebSocket技术来实现实时数据的传输,因为之前也没接触过,所以捣鼓了好些天,最近恰巧有空就写写.有误的地方还请大牛们能及时指正. 项目背景:基于spring+sp ...

  5. latex2e

    classs and packages 这一节介绍新的latex文档结构, 以及新的文件类型: classs and packages 类和包是什么? lext 2.09和latex2e的主要差别就在 ...

  6. 创建dynamics CRM client-side (十) - 用JS来获取form type

    用户可以用以下代码来获取 form type 更多的信息可以查阅https://docs.microsoft.com/en-us/powerapps/developer/model-driven-ap ...

  7. OpenCV里的颜色空间

    RGB三原色组合方式是最常用的 RGB色彩空间: R:红色分量 G:绿色分量 B:蓝色分量 HSV色彩空间: H - 色调(主波长). S - 饱和度(纯度/色调). V - 明度(强度). LAB色 ...

  8. Java 添加、读取、删除Excel形状

    本文介绍通过java程序在excel中操作形状(图形)的方法,包括: 1. 添加形状(如设置形状类型/位置/大小.形状颜色填充(单色/渐变色/纹理/图片填充).形状显示或隐藏.形状倾斜角度.添加文本到 ...

  9. 最小环(floyd以及dijkstra实现+例题)

    最小环定义 最小环是指在一个图中,有n个节点构成的边权和最小的环(n>=3). 一般来说,最小环分为有向图最小环和无向图最小环. 最小环算法: 直接暴力: 设\(u\)和\(v\)之间有一条边长 ...

  10. java操作数组转list集合删除元素报错ConcurrentModificationException

    public static void main(String[] args) { ArrayList<String> list = new ArrayList<String>( ...