关闭

Android开发之SharedPreferences详解

标签: SharedPreferencesAndroid王尊宽
414人阅读 评论(0) 收藏 举报
分类:

一、概述

利用SharedPreferences保存数据是Android本地保存数据的方式之一。SharedPreferences主要用于保存基本类型的数据,例如int、long、string、Boolean等,并且保存数据时都以键值对的形式进行保存。值得注意的是,在应用程序结束运行时,SharedPreferences中保存的数据仍旧会存在。

在项目开发中,有两种方式获取SharedPreferences对象,现在简要介绍如下:

1)getSharedPreferences()方法:如果需要很多个共享文件,他们之间可以用名称来区分的话,必须使用该方法。方法中的第一个参数就是共享文件的名称。

2)getPreferences()方法:如果应用程序只需要一个共享文件,可以使用此方法。因为共享文件只有一个,所以,不需要提供文件名称了。


二、插入值的方法

在开发过程中我们需要向SharedPreferences共享文件中插入键值对,此时需要按如下的步骤进行数值的插入:

1)调用SharedPreferences类的edit()方法获得Editor对象;

2)调用putXXX()方法插入键值对;

3)使用commit()方法提交。

下面将附上一个简单的实例,依照上述方法,生成一个SharedPreferences对象,并向其中插入一些键值对。

SharedPreferences sp = getSharedPreferences("sp1", MODE_PRIVATE);// 获得私有类型的SharedPreferences

Editor editor = sp.edit();// 获得Editor对象

editor.putString("name", "wangzunkuan");// 增加用户名

editor.putString("sex", "male");// 增加密码

editor.commit();// 确认提交

上面的代码中在生成SharedPreferences对象时需要写入两个参数:第一个参数即为该公共文件的名称,第二个参数为该公共文件的数据操作模式。SharedPreferences的数据操作模式主要有以下4种:

MODE_PRIVATE:私有模式(默认操作模式),该文件中的数据都是私有数据,只能被应用本身访问。另外,在该模式下写入的内容会覆盖原文件的内容。

MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件;

MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;

MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。

注意,MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。


二、获取值的方法

SharedPreferences 中获取数据很简单,只要实例化一个SharedPreferences 对象,然后调用该对象的getXXX()方法即可。实例代码如下

SharedPreferences sp =getSharedPreferences("mrsoft",MODE_PRIVATE); SharedPreferences

String name = sp.getString("nem", "mr");

String sex = sp.getString("sex", "001");

上面的getXXX()方法中有两个参数,其中参数一表示要查看的键值对的键值,第二个参数则表示如该值不存在时的系统默认值。


总结:本文主要讲述了SharedPreferences的概念、特点和运用SharedPreferences在本机进行数据存取的主要操作步骤和重点参数分析。希望能给想要学习SharedPreferences的朋友们带来一些帮助。





0
0
查看评论

Android之SharedPreferences详解与原理分析

切记不要写成下面的形式,会导致数据无法存储 SharedPreferences sp = getSharedPreferences("sp_demo", Context.MODE_PRIVATE); sp.edit().putString("name", &...
  • lyl278401555
  • lyl278401555
  • 2016-01-30 11:51
  • 29867

android SharedPreferences的一般用法(存取清删)

之前做应用时碰到这样一个问题:在“A” Activity 要与 “B” Activity的Fragment进行通信传值,但是忽然发现无法拿到B中Fragment的Handler,又不能发送广播,短暂的思考之后想到了SharedPreferences这个轻型的数据存储方式。   SharedPref...
  • ShanYu1198124123
  • ShanYu1198124123
  • 2016-09-12 20:37
  • 23364

Android--SharedPreferences的存储和获取数据--案例《登录》

Sharedpreferences的使用简介 SharedPreference是Android平台上一个轻量级的存储类,主要用于存储一些应用程序的配置参数,比如用户名、密码、自定义参数的设置等。Sharedpreferences中存储的数据是以key/value兼职对的形式保存在XML文件夹中,改...
  • lg_1996
  • lg_1996
  • 2017-04-07 07:04
  • 744

Android中的SharedPreferences存储数据方式

1.概述。SharePreferences是用来存储一些简单配置信息的一种机制,使用Map数据结构来存储数据,以键值对的方式存储,采用了XML格式将数据存储到设备中。例如保存登录用户的用户名和密码。只能在同一个包内使用,不能在不同的包之间使用,其实也就是说只能在创建它的应用中使用,其他应用无法使用。...
  • zuolongsnail
  • zuolongsnail
  • 2011-06-20 16:58
  • 52072

Android SharedPreferences工具类 ,实现List/Map的保存读取

封装SharedPreferences工具类,实现快速保存读取Integer,String,Float,Long,Boolean,Object以及List<Object>以及Map<String,Object>
  • a512337862
  • a512337862
  • 2017-06-23 13:26
  • 1549

android SharedPreferences的一般用法(存取清删)

之前做应用时碰到这样一个问题:在“A” Activity 要与 “B” Activity的Fragment进行通信传值,但是忽然发现无法拿到B中Fragment的Handler,又不能发送广播,短暂的思考之后想到了SharedPreferences这个轻型的数据存储方式。   SharedPr...
  • meiwan123
  • meiwan123
  • 2017-02-06 11:05
  • 604

查看SharedPreferences中保存的数据

Android开发中一般都是将配置文件保存至 SharedPreferences 中,除了使用 getString 等方法获取保存的值之外有什么办法可以直观的看到所保存的值呢?答案是使用 adb 工具。步骤:一、打开命令提示符(Win+R)输入cmd回车; 二、输入命令 adb shell ...
  • u014112893
  • u014112893
  • 2017-07-25 21:56
  • 647

Android存储---SharedPreferences的介绍与使用

SharedPreferences详解 SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置,比如Activity状态,Activity暂停时,将此activity的状态保存到SharedPereferences中;当Activity重载,系统回调方...
  • dl10210950
  • dl10210950
  • 2016-09-04 17:45
  • 6429

Android Sharedpreferences清空的正确方法

在开发中有的时候会有一个退出登录的功能,需要做的就是把保存的一些东西给删除掉,我用的是sharedpreferences来保存的,所以我就想直接删除那个文件就好了,于是 public static void cleanSharedPreference(Context context) { ...
  • a_man_coder
  • a_man_coder
  • 2017-09-25 14:57
  • 436

android SharedPreferences保存数组或集合

保存 List indutryEntityList = new ArrayList;//行业id 名称 还有很多 indutryEntityList.addAll(FastJsonUtils.getObjectsList(t.getData(), IndustryListEntity.class)...
  • meixi_android
  • meixi_android
  • 2018-01-18 16:27
  • 67
    个人资料
    • 访问:4650次
    • 积分:673
    • 等级:
    • 排名:千里之外
    • 原创:47篇
    • 转载:5篇
    • 译文:0篇
    • 评论:1条
    文章分类
    最新评论