欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android数据存储之SharedPreferences

程序员文章站 2022-07-14 15:09:42
...

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()没有返回值。

相关标签: android相关