Android开发教程:数据储存之SharedPreferences

转载 2015年11月18日 12:03:45

转:http://liuzhichao.com/p/522.html


在我们使用的桌面软件中,通常会有一个“选项”菜单,选项是对软件的常规或核心设置。在JavaSE和JavaEE中常用的是*.properties,在Windows平台下常使用*.ini文件。在Android中我们使用SharedPreferences来完成这种对配置文件的读写。SharedPreferences保存的数据主要是类似于配置信息格式的数据,因此保存的数据主要是简单类型的键值对(key-value),它保存的是一个XML文件。

  1. getPreferences():获取到作用域是本Activity的preference,是Activity类中的方法,只需指定mode
  2. getSharedPreferences():获取到作用域是本应用程序的preference
  3. getDefaultSharedPreferences():每个应用有一个默认的偏好文件preferences.xml,使用getDefaultSharedPreferences获取

SharedPreferences常用的属性和方法

方法名称 描述
public abstract boolean contains (String key) 判断SharedPreferences是否包含特定key的数据
public abstract SharedPreferences.Editor edit () 返回一个Edit对象用于操作SharedPreferences
public abstract Map<String, ?> getAll () 获取SharedPreferences数据里全部的key-value对
getXXX(String key,XXX defvlaue) 获取SharedPreferences数据指定key所对应的value,如果该key不存在,返回默认值defValue。其中XXX可以是boolean、float、int、long、String等基本类型的值

由于SharedPreference是一个接口,而且在这个接口里并没有提供写入数据和读取数据的能力。但是在其内部有一个Editor内部的接口,Edit这个接口有一系列的方法用于操作SharedPreference。

Editor接口的常用方法

方法名称 描述
public abstract SharedPreferences.Editor clear () 清空SharedPreferences里所有的数据
public abstract boolean commit () 当Editor编辑完成后,调用该方法可以提交修改,而且必须要调用这个数据才修改
public abstract SharedPreferences.Editor putXXX (String key, boolean XXX) 向SharedPreferences存入指定的key对应的数据,其中XXX可以是boolean、float、int、long、String等基本类型的值
public abstract SharedPreferences.Editor remove (String key) 删除SharedPreferences里指定key对应的数据项

 

SharedPreferences是一个接口,程序是无法创建SharedPreferences实例的,可以通过Context.getSharedPreferences(String name.int mode)来得到一个SharedPreferences实例

name:是指文件名称,不需要加后缀.xml,系统会自动为我们添加上。一般这个文件存储在/data/data/<package name>/shared_prefs下(这个面试常问到)

mode:是指定读写方式,其值有三种,分别为:

Context.MODE_PRIVATE:指定该SharedPreferences数据只能被本应用程序读、写

Context.MODE_WORLD_READABLE:指定该SharedPreferences数据能被其他应用程序读,但不能写

Context.MODE_WORLD_WRITEABLE:指定该SharedPreferences数据能被其他应用程序读写。

下面是一个使用SharedPreferences的简单例子,通过SharedPreferences记下程序运行的次数:

public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		sp = getSharedPreferences("data", MODE_PRIVATE);
		Editor editor = sp.edit();
		int count = sp.getInt("count", 1);
		new AlertDialog.Builder(this)
		.setMessage("这是您第"+count+"次使用本软件")
		.create()
		.show();
		editor.putInt("count", ++count);
		editor.commit();

	}

读写其他应用SharedPreferences

在有时的开发过程中,我们可能要访问其他的应用程序的SharedPreferences,要实现这样的功能,我们必须要保证要访问的那个应用程序的SharedPreferences的访问权限要是MODE_WORLD_READABLE,这表明该SharedPreferences可以被其他应用程序读取,如果指定的MODE_WORLD_WRITEABLE表明该SharedPreferences可以被其他应用程序读取写入其实现思路如下

1、  获得其他应用程序对应的Context

2、  通过这个Context得到这个应用程序的SharedPreferences,然后再利用这个SharedPreferences读取内容

// 获取其他应用程序的Context
        Context otherContext = createPackageContext("com.jiahui.preferences",CONTEXT_IGNORE_SECURITY);
      // 获取其他应用程序的SharedPreferences
       SharedPreferences preferences = otherContext.getSharedPreferences("test",Context.MODE_WORLD_READABLE);

相关文章推荐

Android开发教程:数据储存之SharedPreferences

在我们使用的桌面软件中,通常会有一个“选项”菜单,选项是对软件的常规或核心设置。在JavaSE和JavaEE中常用的是*.properties,在Windows平台下常使用*.ini文件。在Andro...

Android开发-数据存储SharedPreferences工具类、Set<String>保存问题、源码分析

介绍SharedPreferences作为Android提供给我们方便简单的存储数据的类。它内部的实现实际上是xml格式的文件存储数据,同时为了提升读写性能同时实现了内存缓存机制。关键源码在andro...

Android开发——补充SharedPreferences存储(跨Activity存取数据)

平安夜晚上我们自学了简单的SharedPreferences存储,今天课上老师又讲了一遍,我们又学了一招,跨Activity存取数据。不过我们把前面的几种存储这样系统学过来就觉得这个也不是很难嘛,可以...

Android开发-Sharedpreferences-存储数据使用方法-完整Demo-AndroidStudio

项目完整压缩包:http://download.csdn.net/detail/iwanghang/9606408 manifests.xml: xml version="1.0" encodin...

android开发框架(三)数据持久化(2)-SharedPreferences

通过SharedPreference存储数据;SharedPreference存储路径 SharedPreference是Android提供的一种轻量级的数据存储方式,通过键值对(Key-Value...

Android开发 SharedPreferences读取不到最新数据..

最近公司的APP要实现进入APP的时候用户手动选择地区,然后在登录,这个时候其实是选择的对应的服务器地址,然而在实现过程中,我发现SharedPreferences在主页始终读取不到最新的服务器地址,...

Android开发笔记(二十九)使用SharedPreferences存取数据

SharedPreferences使用场景 共享变量(SharedPreferences)是Android上的一个轻量级存储工具,存储结构是类似map的key—value键值对形式。它主要用于保存ap...
  • aqi00
  • aqi00
  • 2015年12月28日 09:53
  • 1101

Android开发之数据存储——SharedPreferences基础知识详解,饿补学会基本知识,开发者必会它的用法。

一、数据存储选项:Data Storage ——Storage Options【重点】 1、Shared Preferences Store private primitive data in k...

Android开发从入门到放弃(3)使用SharedPreferences保存数据

在上一篇文章中我在onSaveInstanceState方法中暂时保存了Activity的状态,尽管这也比较有用,但是更多情况下,我们更希望持久化地存储一些简单的数据,例如,保存某些用户的设置,或存储...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android开发教程:数据储存之SharedPreferences
举报原因:
原因补充:

(最多只允许输入30个字)