android之SharedPreferences

  • 简介
  • 将数据存储到SharedPreferences中
    • 获取SharedPreferences对象

      • Context类中的getSharedPreferences方法

        • 文件位置
      • Activity类中的getPreferences方法
      • PreferenceManager类中的getDefaultSharedPreferences方法
    • 向SharedPreferences文件中保存数据
  • 从SharedPreferences中读取数据
  • 结果演示

简介

SharedPreferences是数据存储方案中持久化技术之一(其它还有文件存储,数据库存储等),它是一个轻量级的存储类,特别适合用于保存软件配置参数或者保存临时数据。使用 SharedPreferences保存数据,其背后是用xml文件(键值对)存放数据,,它存放在文件系统中的/data/data/<package name>/shared_prefs目录下。

将数据存储到SharedPreferences中

获取SharedPreferences对象

要想使用SharedPreferences来保存数据,首先需要获取SharedPreferences对象,有下列三个方法:

Context类中的getSharedPreferences()方法

getSharedPreferences()接收两个参数:第一个参数用于指定文件的名称(若不存在则自动创建,无需加后缀,系统自动加),第二个参数指定文件的操作模式,主要有两种模式:MODE_PRIVATE和MODE_MULTI_PROCESS,MODE_PRIVATE和直接传入0效果一样,表示只有当前的应用程序才可以对该SharedPreferences文件进行读写;MODE_MULTI_PROCESS则一般用于多个进程对同一个SharedPreferences文件进行读写的情况。其实还有另两种,但是已在Android4.2版本之后被弃用,不多介绍。简单代码如下:

SharedPreferences sharedPreferences = getApplicationContext()
.getSharedPreferences("sywyg",0);

注:

  • 通过这种方法获得的SharedPreferences对象能被同一个应用中的所有Activity访问
  • 文件保存为xml类型

文件位置

通过 android studio中工具栏上的绿色android机器人打开DDMS(eclipse中好像直接写着DDMS呢)可以查看sd卡文件(File Explorer),我的SharedPreferences文件存放在:/data/data/com.sywyg.intent_test/shared_prefs/名字为sywyg.xml。导出xml文件打开之后内容如下:

<?xml version=‘1.0‘ encoding=‘utf-8‘ standalone=‘yes‘ ?>
<map>
    <string name="name">sywyg</string>
    <long name="id" value="1" />
</map>

可以看到SharedPreferences就是通过键值对保存数据的。

Activity类中的getPreferences()方法

第二种获取SharedPreferences对象的方法:Activity类中的getPreferences()方法。该方法只接受一个模式参数,而文件名自动为当前Activity的类名。简单代码如下:

SharedPreferences sharedPreferences2 = this.getPreferences(0);

通过这种方式创建的SharedPreferences文件存放的位置不变,而xml名称为:MainActivity.xml,内容如下:

<?xml version=‘1.0‘ encoding=‘utf-8‘ standalone=‘yes‘ ?>
<map>
    <string name="name">sywyg</string>
    <long name="id" value="1" />
</map>

注:

  • 通过这种方法获得的SharedPreferences对象,若其它Activity想获得该SharedPreferences文件,则只能通过Context类中的getSharedPreferences()方法获取SharedPreferences对象,当然文件名必须是该SharedPreferences文件名。

PreferenceManager类中的getDefaultSharedPreferences()方法

该方法为静态方法,只有一个Context参数,并自动使用当前应用程序的包名作为前缀来命名SharedPreferences文件。简单代码如下:

SharedPreferences sharedPreferences3 = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

通过这种方式创建的SharedPreferences文件存放的位置不变,而xml名称为:com.sywyg.intent_test_preferences.xml,内容如下:

<?xml version=‘1.0‘ encoding=‘utf-8‘ standalone=‘yes‘ ?>
<map>
    <string name="name">sywyg</string>
    <long name="id" value="1" />
</map>

向SharedPreferences文件中保存数据

获取SharedPreferences对象之后,就可以向SharedPreferences文件保存数据了,由下列三步实现:

  1. 调用SharedPreferences对象的edit()方法来获取一个SharedPreferences.Editor(内部类)对象;
  2. 通过putXXX()方法向Editor对象中添加数据;
  3. 调用commit()方法提交数据,完成数据存储操作。

注:

  • 一般在onPause()方法中保存数据。

具体代码如下:

@Override
protected void onPause(){
   super.onPause();
   SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences("sywyg",0);
   //SharedPreferences sharedPreferences = this.getPreferences(0);
   //SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
   SharedPreferences.Editor editor = sharedPreferences.edit();
   editor.putString("name","sywyg");
   editor.putLong("id",1);
   editor.commit();
}

注:

  • 通过putXXX()方法保存的数据类型只能是:String,int,boolean,long,float;还可以是String集合。

从SharedPreferences中读取数据

通过SharedPreferences对象的getXXX()可以获取对应的数据,getXXX()方法接收两个参数,第一个参数是键(存数据时使用的键名),第二个参数为默认值,即当找不到对应的键时返回该值。

代码如下:

@Override
protected void onResume(){
  super.onResume();
  SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences("sywyg",0);
  String name = sharedPreferences.getString("name","");
  long id = sharedPreferences.getLong("id",0);
  Toast.makeText(this,"name:" + name + ",id:" + id,Toast.LENGTH_LONG).show();
  SharedPreferences.Editor editor = sharedPreferences.edit();
  //清除SharedPreferences文件中的内容
  editor.clear();
  editor.commit();
}

结果演示

新手上路,多多指教。

郭霖第一行

威哥视频

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-01 01:09:09

android之SharedPreferences的相关文章

Android 使用SharedPreferences进行数据存储和读取数据

很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的QQ,用户可以设置是否允许陌生人添加自己为好友.对于软件配置参数的保存,如果是window软件通常我们会采用ini文件进行保存,如果是j2se应用,我们会采用properties属性文件或者xml进行保存.如果是Android应用,我们最适合采用什么方式保存软件配置参数呢?Android平台给我们提供了一个SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数.使用SharedPreferen

学习Android之SharedPreferences使用

效果图如下: 当我们想让自己的属性设置保存下来,这时就需要SharedPreferences. 上面这个小程序,音乐状态是保存下来的.使用的上一次退出的状态. 进入DDMS,data文件下的data文件中,找到自己的包名文件,双击打开,有shared_prefs文件,里面有xml文件,这就是配置文件. 本程序使用了android的上下键,同常我们的模拟器的方向键是不能用的,这是就需要我们打开它,在C盘下找到文件 .android,双击avd文件,找到你的模拟器的文件夹,双击打开,找到config

Android使用SharedPreferences保存对象

核心原理: 对象序列化 步骤 1.要保存的对象实现序列化Serializable 2.将序列化的对象保存String(本文的做法是保存为byte数组在转为16进制的String类型保存起来) 3.将保存的String反序列化为对象 下面是完整代码 步骤1.要保存的对象实现序列化Serializable public class Sertest implements Serializable{ private String name; private int age; } 步骤2.将序列化的对象保

Android之SharedPreferences工具类

本工具类永久维护,永久更新,如果各位读者发现有bug或者不合理之处,请留言,博主将第一时间改正. 本工具类提供的功能有: 1.存储五种类型的数据: 2.读取五种类型的数据: 内容如下: import android.content.Context; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; /** * * @author bear * * SharedPre

Android Them+SharedPreferences 修改程序所有view字体颜色、大小和页面背景

有这么一个需求,可以对页面的样式进行选择,然后根据选择改变程序所有字体颜色和页面背景.同时下一次启动程序,当前设置依然有效. 根据需求,我们需要一种快速,方便,有效的方式来实现需求,然后可以通过Android Them + SharedPreferences 来实现需求.Them用于存放设置的每一种样式,并应用于程序中,SharedPreferences用于记住程序当前的样式,根据SharedPreferences的内容来设置程序的样式,实现下次启动能够oncreat当前的样式设置. 这里的Th

Android:SharedPreferences 记住用户名和密码

参考:http://blog.csdn.net/liuyiming_/article/details/7704923 SharedPreferences介绍: SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置参数,它是采用xml文件存放数据的,文件存放在"/data/data<package name>/shared_prefs"目录下. SharedPreferences的用法: 由于SharedPreferences是

android中sharedPreferences的用法

SharedPreferences介绍: 做软件开发应该都知道,很多软件会有配置文件,里面存放这程序运行当中的各个属性值,由于其配置信息并不多,如果采用数据库来存放并不划算,因为数据库连接跟操作等耗时大大影响了程序的效率,因此我们使用键值这种一一对应的关系来存放这些配置信息.SharedPreferences正是Android中用于实现这中存储方式的技术. SharedPreferences的使用非常简单,能够轻松的存放数据和读取数据.SharedPreferences只能保存简单类型的数据,例

android.content.SharedPreferences.edit()

今天在实现一个保存用户设置到SharedPreferences时,出现了一个不能将数据保存到SharedPreferences中的情况.经过仔细的分析得出: android.content.SharedPreferences.Editor.putString(String key, String value) 和 android.content.SharedPreferences.Editor.commit() 这两个方法所用的editor不同所致. 错误代码如下: SharedPreferen

android中SharedPreferences和PreferenceActivity的存取数据

本文主要介绍SharedPreferences和PreferenceActivity的基础知识和用法. 主要资料来源于网络,包括但不限于: <Android之PreferenceActivity>--http://www.cnblogs.com/wservices/archive/2010/07/08/1773449.html <在Android中Preferences数据存储的使用> <Android的设置界面及Preference使用> <OnPreferen

Android之SharedPreferences权限

import android.app.Activity; import android.content.SharedPreferences; import android.os.Bundle; public class PermissionActivity extends Activity { private final int[] MODES=new int[]{ Activity.MODE_PRIVATE,//默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆