android.content.SharedPreferences是一个接口,用来获取和修改持久化存储的数据。有三种获取系统中保存的持久化数据的方式:

1). public SharedPreferences getPreferences (int mode)
通过Activity对象获取,获取的是本Activity私有的Preference,保存在系统中的xml形式的文件的名称为这个Activity的名字,因此一个Activity只能有一个,属于这个Activity。
        2). public SharedPreferences getSharedPreferences (String name, int mode)
因为Activity继承了ContextWrapper,因此也是通过Activity对象获取,但是属于整个应用程序,可以有多个,以第一参数的name为文件名保存在系统中。
        3). public static SharedPreferences getDefaultSharedPreferences (Context context)
PreferenceManager的静态函数,保存PreferenceActivity中的设置,属于整个应用程序,但是只有一个,Android会根据包名和PreferenceActivity的布局文件来起一个名字保存。
        通过以上方式取得SharedPreferences后就可以对数据进行读取或者保存了。

如下是一个SharedPreferences的简单操作

  1. package org.xml.demo.viewpager;
  2.  
  3. import ogg.huanxin.huadong.R;
  4. import android.app.Activity;
  5.  
  6. import android.content.Intent;
  7. import android.content.SharedPreferences;
  8. import android.os.Bundle;
  9. import android.view.View;
  10. import android.view.Window;
  11. import android.widget.Button;
  12. import android.widget.CheckBox;
  13. import android.widget.EditText;
  14. import android.widget.Toast;
  15.  
  16. /*
  17. * 使用SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data/<package name>/shared_prefs目录下:
  18. */
  19. public class Login extends Activity {
  20. /** 定义登录姓名的编辑框 */
  21. private EditText ed_Name;
  22. /** 定义输入密码的编辑框 */
  23. private EditText ed_PassWord;
  24. /** 定义登录的按钮 当点击时跳转到其他的界面 */
  25. private Button loginButton;
  26. /** 定义个选择框点击时会记住密码 */
  27. private CheckBox cb_dian;
  28.  
  29. @Override
  30. protected void onCreate(Bundle savedInstanceState) {
  31. // TODO Auto-generated method stub
  32. super.onCreate(savedInstanceState);
  33. requestWindowFeature(Window.FEATURE_NO_TITLE);
  34. super.setContentView(R.layout.login);
  35. ed_Name = (EditText) super.findViewById(R.id.ed_login_name);
  36. ed_PassWord = (EditText) super.findViewById(R.id.ed_login_password);
  37. loginButton = (Button) super.findViewById(R.id.bb_login_login);
  38. cb_dian = (CheckBox) super.findViewById(R.id.cb_login_dian);
  39.  
  40. loginButton.setOnClickListener(new MyOnClickItem());
  41. /** 定义个方法当下次进来的时候会读取getSharedPreferences若有则将姓名和密码返回到界面上 */
  42. readLogin();
  43.  
  44. }
  45.  
  46. private class MyOnClickItem implements View.OnClickListener {
  47.  
  48. @Override
  49. public void onClick(View arg0) {
  50. // TODO Auto-generated method stub
  51. if (cb_dian.isChecked()) {
  52. BaoCuenLogin();
  53. Toast.makeText(Login.this, "登陆成功", Toast.LENGTH_SHORT).show();
  54. }
  55. Intent it = new Intent(Login.this, DialogText.class);
  56. startActivity(it);
  57. }
  58.  
  59. }
  60.  
  61. /** 定义个方法当下次进来的时候会读取getSharedPreferences若有则将姓名和密码返回到界面上 */
  62. private void readLogin() {
  63. SharedPreferences sp = getSharedPreferences("info", MODE_PRIVATE);
  64. this.ed_Name.setText(sp.getString("name", ""));
  65. this.ed_PassWord.setText(sp.getString("password", ""));
  66. }
  67.  
  68. /** 实现文件的保存 */
  69. private void BaoCuenLogin() {
  70. String name = ed_Name.getText().toString();
  71. String passWord = ed_PassWord.getText().toString();
  72. SharedPreferences sp = getSharedPreferences("info", MODE_PRIVATE);
  73. SharedPreferences.Editor ed = sp.edit();
  74. ed.putString("name", name);
  75. ed.putString("password", passWord);
  76. ed.commit();// 提交
  77. }
  78.  
  79. }

下面是对SharedPreferences的封装

  1. package com.item.test.util;
  2.  
  3. import android.content.Context;
  4. import android.content.SharedPreferences;
  5. import android.util.Log;
  6.  
  7. /**
  8. * 这个是SharedPreferences的封装
  9. * Created by Administrator on
  10. */
  11.  
  12. public class SPManager {
  13.  
  14. private static SPManager spManager = null;
  15. private static SharedPreferences sp = null;
  16. private static SharedPreferences.Editor editor = null;
  17.  
  18. private static final String SHARE_NAME = "info";//Preference文件名
  19.  
  20. private SPManager(Context context) {
  21. sp = context.getSharedPreferences(SHARE_NAME, Context.MODE_PRIVATE);
  22. editor = sp.edit();
  23. }
  24.  
  25. public static SPManager getInstance(Context context) {
  26. if (spManager == null || sp == null || editor == null) {
  27. spManager = new SPManager(context);
  28. }
  29. return spManager;
  30. }
  31.  
  32. public void putInt(String key, int value) {
  33. editor.putInt(key, value);
  34. editor.commit();
  35. }
  36.  
  37. public int getInt(String key, int defaultValue) {
  38. return sp.getInt(key, defaultValue);
  39. }
  40.  
  41. public void putLong(String key, Long value) {
  42. editor.putLong(key, value);
  43. editor.commit();
  44. }
  45.  
  46. public long getLong(String key, int defaultValue) {
  47. return sp.getLong(key, defaultValue);
  48. }
  49.  
  50. public void putString(String key, String value) {
  51. editor.putString(key, value);
  52. editor.commit();
  53. }
  54.  
  55. public String getString(String key, String defaultValue) {
  56. return sp.getString(key, defaultValue);
  57. }
  58.  
  59. public void putFloat(String key, float value) {
  60. editor.putFloat(key, value);
  61. editor.commit();
  62. }
  63.  
  64. public boolean isKeyExist(String key) {
  65. return sp.contains(key);
  66. }
  67.  
  68. public float getFloat(String key, float defaultValue) {
  69. return sp.getFloat(key, defaultValue);
  70. }
  71.  
  72. public void putBoolean(String key, boolean value) {
  73. editor.putBoolean(key, value);
  74. editor.commit();
  75. }
  76.  
  77. public boolean getBoolean(String key, boolean defaultValue) {
  78. return sp.getBoolean(key, defaultValue);
  79. }
  80.  
  81. public void remove(String key) {
  82. editor.remove(key);
  83. editor.commit();
  84. }
  85. }

SharedPreferences的封装的更多相关文章

  1. Android开发之SharedPreferences的封装

    对于大部分初学者来说,如果想利用SharedPreferences进行数据存储的话大部分人(包括本人)应该会这样: 存储: SharedPreferences sharedPreferences = ...

  2. Android开发之sharedpreferences 详解

    SharedPreferences简介:   做软件开发应该都知道,很多软件会有配置文件,里面存放这程序运行当中的各个属性值,由于其配置信息并不多,如果采用数据库来存放并不划算,因为数据库连接跟操作等 ...

  3. Android之SharedPreferences内部原理浅析

    SharedPreferences内部工作原理: 1.调用getSharedPreferences();创建一个SharedPreferences对象,其中会先判断是否存在对应xml文件,如果发现存在 ...

  4. android120 zhihuibeijing 开机页面

    软件启动旋转动画: 布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" ...

  5. 巧用第三方高速开发Android App 热门第三方SDK及框架

    巧用第三方高速开发Android App 热门第三方SDK及框架 历经大半年的时间,最终是把这门课程给录制出来了,也就在今天,正式在慕课网上上线了 项目地址:巧用第三方高速开发Android App ...

  6. Android重构篇——项目架构篇

    版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com/cavalier-/p/6823777.html 前言 大家好,我是Cavalier ...

  7. 巧用第三方快速开发Android App 热门第三方SDK及框架

    巧用第三方快速开发Android App 热门第三方SDK及框架 历经大半年的时间,终于是把这门课程给录制出来了,也就在今天,正式在慕课网上上线了 项目地址:巧用第三方快速开发Android App ...

  8. 封装sharedPreferences SettingsSPData

    /*************************************************************************** * 封装sharedPreferences S ...

  9. Android 工具类 SharedPreferences 封装

    SharedPreferences 是 Android 数据存储方式中的一种,特别适合用来存储少量的.格式简单的数据,比如应用程序的各种配置信息,如是否打开音效,是否开启震动等等. SharedPre ...

随机推荐

  1. AngularJs--Dependency Injection 规则

    参考:https://docs.angularjs.org/guide/di AngularJs的依赖注入简称DI,在AngularJs项目中可以无处不在,到底应该注入些什么东东呢?一直是迷迷糊糊的, ...

  2. POJ_2431 Expedition 【数据结构】

    一.题面 POJ2431 二.分析 主要说几个坑 1.给出的点需要根据下标排序. 2.根据不同的方式要把起始点或者终点加进去.我没有转换距离,而是直接从起始点到终点根据距离不断相减判断的,那么起点就是 ...

  3. 关于cin 与 cout 的加速

    在用cin 与 cout 的时候 可以使用 ios::sync_with_stdio(); cin.tie(); cout.tie(); 这样在输入大数据的时候可以加快许多

  4. C# 调用键盘

    首先我们说的键盘指的是:tabtip和osk.但这两个所在的位置不同,样貌也不一样 C:\Windows\System32\osk.exe C:\Program Files\Common Files\ ...

  5. redis cluster 集群部署

    准备工作 1. 安装docker curl -s https://get.docker.com/ | sh 注:一键安装的事最新版docker.已安装docker可跳过此步骤 2. 获取基础镜像 do ...

  6. PIE SDK主/次要分析

    1.算法功能简介 主要分析功能是采用类似卷积滤波的方法将较大类别中的虚假像元归到该类中,首先定义一个变换核尺寸,然后用变换核中占主要地位(像元最多)类别数代替中心像元的类别数,次要分析相反,用变换核中 ...

  7. PIE SDK算法的同步调用

    1.    算法功能简介 同步调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为. PIE SDK支持算法功能的执行,下面对算法的同步调用功能进行介绍. 2.    算法功能实现说明 2. ...

  8. 1.rabbitmq 集群版安装及使用nginx进行四层负载均衡设置

    1.安装erlang 需要注意erlang的版本是否满足rabbitmq的需求 这里用到的版本是:Erlang 19.0.4   RabbitMQ 3.6.15 wget http://www.rab ...

  9. 文献综述七:基于SSM的网上商城的开发与设计

    一.基本信息 标题:基于SSM的网上商城的开发与设计 时间:2018 出版源:Computer Knowledge and Technology 文件分类:对框架的研究 二.研究背景 为了解决现在电商 ...

  10. Python Fileinput 模块

    作者博文地址:http://www.cnblogs.com/liu-shuai/ fileinput模块提供处理一个或多个文本文件的功能,可以通过使用for循环来读取一个或多个文本文件的所有行. [默 ...