Android数据存储之SharedPreferences

Android数据存储之SharedPreferences

一、概述

SharedPreferences是一种轻量级的数据存储方式,采用键值对的存储方式。

SharedPreferences只能存储少量数据,大量数据不能使用该方式存储,支持存储的数据类型有boolean、float、int、long、string。

SharedPreferences存储到一个XML文件中的,路径在**/data/data//shared_prefs/**下,文件名以及存储后面详细讲述。

二、基本用法

1.获取SharedPreferences对象

要创建存储文件或访问已有数据,首先要获取SharedPreferences才能进行操作。获取SharedPreferences对象有下面两个方式:

通过Context调用该方法获得对象
(1)getSharedPreferences(String name, int mode) — 它有两个参数,第一个name 指定了SharedPreferences存储的文件的文件名,第二个参数mode 指定了操作的模式。这种方式获取的对象创建的文件 可以被整个应用所有组件使用,有指定的文件名。

通过Activity调用获得对象
(2)getPreferences(int mode) —它只有一个参数mode 指定操作模式。这种方式获取的对象创建的文件 属于Activity,只能在该Activity中使用,且没有指定的文件名,文件名同Activity名字。

如:

SharedPreferences mContextSp = this.getSharedPreferences( "test_sp", Context.MODE_PRIVATE );
---创建的文件名是,test_sp.xml
SharedPreferences mActivitySp = this.getPreferences( Context.MODE_PRIVATE );
---创建的文件名是,MainActivity.xml(该Activity叫MainActivity)

操作模式(mode):

两个方式都有一个mode参数,mode具体有4个值,最新的只能使用默认模式 Context.MODE_PRIVATE。

Context.MODE_PRIVATE(0):默认模式,创建的文件只能由 调用的应用程序(或者共享相同用户ID的应用程序)访问

后面3种已不推荐使用。

三、数据创建、获取、删除

SharedPreferences添加或更新数据,通过SharedPreferences 获取 SharedPreferences.Editor,操作文件数据,最后通过commit()或apply()提交修改。

如下:

SharedPreferences preferences = this.getSharedPreferences("test_sp", MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("name", "rty");
editor.putInt("age", 21);
editor.putBoolean("b", true);
editor.commit();

操作后,在对应应用路径下有创建testContextSp.xml。具体手机里的数据如下。

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
    <boolean name="b" value="true" />
    <string name="name">rty</string>
    <int name="age" value="21" />
</map>

注:若没有存储或者被删除,不会删除文件,只会留一个空的map

数据获取。

通过SharedPreferences提供的getInt(),getString()等方法获取 文件中的数据,如果数据不存在,则返回一个默认值。

如:

SharedPreferences preferences = this.getSharedPreferences("test_sp", MODE_PRIVATE);
String name = preferences.getString("name", "hhh");//后一个为默认值
int age = preferences.getInt("age", 10000);
boolean b = preferences.getBoolean("b", false);

删除数据

SharedPreferences preferences = this.getSharedPreferences("test_sp", MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.clear();
editor.commit();

注:

commit()和apply()区别:

apply()立即更改内存中的SharedPreferences对象,但异步地将更新写入磁盘。commit()同步地将数据写入磁盘。commit()是同步的,在主线程调用它应该多注意,因为可能引起阻塞,引起ANR。

commit()有返回值,返回是否成功写入永久性存储中。apply()没有返回值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值