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()没有返回值。
上一篇: Handler机制
下一篇: 读取本地视频文件时间
推荐阅读
-
Android SharedPreferences存储的正确写法
-
Android开发笔记之: 数据存储方式详解
-
python3爬虫学习之数据存储txt的案例详解
-
HTML5 本地存储之如果没有数据库究竟会怎样
-
Android学习之SharedPerference存储详解
-
c语言数据结构之线性表的顺序存储结构
-
SpringBootSecurity学习(17)前后端分离版之 OAuth2.0 数据库(JDBC)存储客户端
-
html5本地存储之localstorage 、本地数据库、sessionStorage简单使用示例
-
python数据结构之线性表的顺序存储结构
-
android之json数据过长打印不全问题的解决