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的简单操作

package org.xml.demo.viewpager;

import ogg.huanxin.huadong.R;
import android.app.Activity; import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast; /*
* 使用SharedPreferences保存数据,其背后是用xml文件存放数据,文件存放在/data/data/<package name>/shared_prefs目录下:
*/
public class Login extends Activity {
/** 定义登录姓名的编辑框 */
private EditText ed_Name;
/** 定义输入密码的编辑框 */
private EditText ed_PassWord;
/** 定义登录的按钮 当点击时跳转到其他的界面 */
private Button loginButton;
/** 定义个选择框点击时会记住密码 */
private CheckBox cb_dian; @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.setContentView(R.layout.login);
ed_Name = (EditText) super.findViewById(R.id.ed_login_name);
ed_PassWord = (EditText) super.findViewById(R.id.ed_login_password);
loginButton = (Button) super.findViewById(R.id.bb_login_login);
cb_dian = (CheckBox) super.findViewById(R.id.cb_login_dian); loginButton.setOnClickListener(new MyOnClickItem());
/** 定义个方法当下次进来的时候会读取getSharedPreferences若有则将姓名和密码返回到界面上 */
readLogin(); } private class MyOnClickItem implements View.OnClickListener { @Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if (cb_dian.isChecked()) {
BaoCuenLogin();
Toast.makeText(Login.this, "登陆成功", Toast.LENGTH_SHORT).show();
}
Intent it = new Intent(Login.this, DialogText.class);
startActivity(it);
} } /** 定义个方法当下次进来的时候会读取getSharedPreferences若有则将姓名和密码返回到界面上 */
private void readLogin() {
SharedPreferences sp = getSharedPreferences("info", MODE_PRIVATE);
this.ed_Name.setText(sp.getString("name", ""));
this.ed_PassWord.setText(sp.getString("password", ""));
} /** 实现文件的保存 */
private void BaoCuenLogin() {
String name = ed_Name.getText().toString();
String passWord = ed_PassWord.getText().toString();
SharedPreferences sp = getSharedPreferences("info", MODE_PRIVATE);
SharedPreferences.Editor ed = sp.edit();
ed.putString("name", name);
ed.putString("password", passWord);
ed.commit();// 提交
} }

下面是对SharedPreferences的封装

package com.item.test.util;

import android.content.Context;
import android.content.SharedPreferences;
import android.util.Log; /**
* 这个是SharedPreferences的封装
* Created by Administrator on
*/ public class SPManager { private static SPManager spManager = null;
private static SharedPreferences sp = null;
private static SharedPreferences.Editor editor = null; private static final String SHARE_NAME = "info";//Preference文件名 private SPManager(Context context) {
sp = context.getSharedPreferences(SHARE_NAME, Context.MODE_PRIVATE);
editor = sp.edit();
} public static SPManager getInstance(Context context) {
if (spManager == null || sp == null || editor == null) {
spManager = new SPManager(context);
}
return spManager;
} public void putInt(String key, int value) {
editor.putInt(key, value);
editor.commit();
} public int getInt(String key, int defaultValue) {
return sp.getInt(key, defaultValue);
} public void putLong(String key, Long value) {
editor.putLong(key, value);
editor.commit();
} public long getLong(String key, int defaultValue) {
return sp.getLong(key, defaultValue);
} public void putString(String key, String value) {
editor.putString(key, value);
editor.commit();
} public String getString(String key, String defaultValue) {
return sp.getString(key, defaultValue);
} public void putFloat(String key, float value) {
editor.putFloat(key, value);
editor.commit();
} public boolean isKeyExist(String key) {
return sp.contains(key);
} public float getFloat(String key, float defaultValue) {
return sp.getFloat(key, defaultValue);
} public void putBoolean(String key, boolean value) {
editor.putBoolean(key, value);
editor.commit();
} public boolean getBoolean(String key, boolean defaultValue) {
return sp.getBoolean(key, defaultValue);
} public void remove(String key) {
editor.remove(key);
editor.commit();
}
}

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. 查看SELinux状态及关闭SELinux

    查看SELinux状态: 输入:/usr/sbin/sestatus -v SELinux status: enabled           ##开启状态 关闭SELinux 修改vi /etc/s ...

  2. Preferences偏好设置

    Preferences偏好设置-Preferences偏好设置 General(综合设置):在综合设置界面内,对Unity集成开发环境进行一些相关的设置 Auto Refresh:自动更新 Alway ...

  3. springcloud微服务 总结一

    一 什么是微服务 译文: 微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调.互相配合,为用户提供最终价值.每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机 ...

  4. OEL6.8安装虚拟带库模拟器

    最近在虚拟机下搭建了一个OSB备份环境,其中使用到了虚拟带库,以下是虚拟带库的配置过程,简要记录之. 1.下载虚拟带库的源码(mhvtl-2016-03-10.tgz). 2.解压缩源码. # cd ...

  5. jenkins-APP打包页面展示二维码【转】

    背景: 客户要求在APP打包页面展示二维码.虽然感觉这个功能很鸡肋,但是还是加上吧. 效果展示: 配置: 在上图中,106对应的内容是BuildName,我们可以通过build-name-setter ...

  6. 关于 FPDF、HTML2PDF里的中文、日文、韩文等双字节字符换行问题

    最近使用 FPDF.HTML2PDF导出中文PDF,发现表格里的数据不会自动换行,格式乱了,看了一下手册,有个 functionCell()可以设置换行,但是设置了半天也没反应!最后搞了一个笨办法完美 ...

  7. Hibernate学习笔记(六)—— 查询优化

    一.Hibernate的抓取策略 1.1 什么是抓取策略 抓取策略是当应用程序需要在(Hibernate实体对象图的)关联关系间进行导航的时候,Hibernate如何获取关联对象的策略. HIbern ...

  8. Codeforces 1136D Nastya Is Buying Lunch (贪心)

    题意: 给一个序列和一组交换序列(a,b),当且仅当a在b的前面(不允许有间隔),这两个数才能交换,问最后一个数最多能移动多少个位置. 分析: 这题是思路是十分的巧妙呀 , 用一个数组num[x]  ...

  9. v-show, v-if, 以及动态组件的区别

    vue提供了v-if, v-show来动态显示隐藏组件 同时也提供了<component>元素在一个挂载点上动态的切换组件, 通过 is 来决定哪个组件被渲染显示 配合<keep-a ...

  10. JS中||的某些用法

    var a = 0 ||'sda';console.log(a);//sda var a = '' ||'sda';console.log(a);//sda