使用 SharedPreferences 实现数据的存储和读取
在开发的过程中我们必须遇到的就是如何对用户的数据进行有效的存储以及读取。我们举个例子,现在我们使用app,当我们登陆一个账号的时候选择记住密码软件就会记住我们的账号以及密码,我们退出当前账号,就可以直接点击登陆进入账号内部,而不需要再输入账号和密码了。那么这就是今天我们要说的,如何对用户输入的账号以及密码进行存储,并且进行显示。这里我们使用到了google工程师向我们推荐的一个API——SharedPreferences。
关于SharedPreferences
它是android.content下的一个接口,官方对他的描述是这样的:用于访问和修改getSharedPreferences(String, int)返回偏好设置数据(preference data)的一个接口。对于任何一组特殊的preferences,所有的客户端共享一个此类单独的实例。修改Preferences必须通过一个SharedPreferences.Editor对象,以确保当他们提交存储数据的操作时,preference值保持一致的状态。最后再提交数据的时候必须使用commit()方法将数据完全写入。
它的优点在于会对一些特殊的字符进行分辨,达到准确读取的目的,传统上我们选择以特殊分隔符来分割要存储的数据,这样虽然会简单点,但是如果用户舌设置的数据同样包含这个分隔符,那么将造成读取失误。
关于SharedPreferences的实例
这里我只介绍关键代码,整个工程可以在该链接下载:http://files.cnblogs.com/files/ghylzwsb/shareprefenrence.rar
1、使用saveUserInfo()方法来存储用户的数据:
/**
* 保存用户名 密码的业务方法
* @param context 上下文
* @param username 用户名
* @param pas 密码
* @return true 保存成功 false 保存失败
*/
public static void saveUserInfo(Context context,String username,String pas){
/**
* SharedPreferences将用户的数据存储到该包下的shared_prefs/config.xml文件中,
* 并且设置该文件的读取方式为私有,即只有该软件自身可以访问该文件
*/
SharedPreferences sPreferences=context.getSharedPreferences("config", context.MODE_PRIVATE);
Editor editor=sPreferences.edit();
//当然sharepreference会对一些特殊的字符进行转义,使得读取的时候更加准确
editor.putString("username", username);
editor.putString("password", pas);
//这里我们输入一些特殊的字符来实验效果
editor.putString("specialtext", "hajsdh><?//");
editor.putBoolean("or", true);
editor.putInt("int", 47);
//切记最后要使用commit方法将数据写入文件
editor.commit();
}
2、当用户重新打开软件时使用如下代码将其显示出来:
//显示用户此前录入的数据
SharedPreferences sPreferences=getSharedPreferences("config", MODE_PRIVATE);
String username=sPreferences.getString("username", "");
String password =sPreferences.getString("password", "");
ed_username.setText(username);
ed_pasw.setText(password);
3、软件运行之后我们可以发现config.xml文件的内容如下:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="specialtext">hajsdh><?//</string>
<string name="username">dsa</string>
<string name="password">dasdasd</string>
<int name="int" value="47" />
<boolean name="or" value="true" />
</map>
我们看到,在xml文件中“><”被转以为“><”,这也为数据的准确读取做好了规范。
以下是程序运行的结果:

总结
至此SharedPreferences的应用结束。在以后的开发过程中,应当多家注意使用官方推荐的API,这会对数据的安全以及数据的完整性有所保障。
2016-04-16
BOB
使用 SharedPreferences 实现数据的存储和读取的更多相关文章
- 在VC下采用ADO实现BLOB(Binary)数据的存储,读取,修改,删除。
在VC下采用ADO实现BLOB(Binary)数据的存储,读取,修改,删除. 作者:邵盛松 2009-09-05 前言 1关于的BLOB(Binary)数据的存储和读取功能主要参考了MSDN上的一篇& ...
- Numpy用于数组数据的存储和读取
Python的Numpy模块可用于存储和读取数据: 1.将一个数组存储为二进制文件 Numpy.save:将一个数组以.npy的格式保存为二进制文件 调用格式:numpy.save(file, arr ...
- (第二章第四部分)TensorFlow框架之TFRecords数据的存储与读取
系列博客链接: (第二章第一部分)TensorFlow框架之文件读取流程:https://www.cnblogs.com/kongweisi/p/11050302.html (第二章第二部分)Tens ...
- 实现JSON数据的存储和读取
事前准备: //创建一个Crime类 public class Crime { private String mTitle; private UUID mUUID; private Date mDat ...
- php基础系列之 数据的存储和读取
·文件处理 ·写入一个文件 1,打开这个文件.如果这个文件不存在,需要先创建它 2,将数据写入这个文件 3,关闭这个文件 ·从一个文件读出数据 1,打开这个文件.如果这个文件不能打开(例如,文件不存在 ...
- json数据的存储与读取
1. json数据格式: data = [ {"key1":"xxx","item":"ddd"}, {"k ...
- 【Cocos2d-X开发学习笔记】第30期:游戏中数据的存储(下)
本系列学习教程使用的是cocos2d-x-2.1.4(最新版为3.0alpha0-pre) ,PC开发环境Windows7,C++开发环境VS2010 一.对数据进行编解码 在上一期中,我们使用了CC ...
- Android数据存储之SharedPreferences及如何安全存储
前言: 最近一直在学习ios的数据存储,当学习到NSUserDefaults的时候让我回想起了SharedPreferences,今天闲来无事,想着总结一下SharedPreferences的使用. ...
- 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)
1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...
随机推荐
- SVN上传代码
概述 SVN上传代码 使用SVN工具上传代码到新浪SAE 1.下载SVN工具http://tortoisesvn.net/downloads.html 2.创建一个文件夹,Checkout,输入SAE ...
- Linux磁盘操作命令
查看本地磁盘使用情况:df或者df -l单位为k 容量便于查看,以1024单位换算为M或者G等:df -h或者df -lh 以1000为单位换算:df -H 显示文件系统类型:df -T 显示指定文件 ...
- SpringMVC架构浅析
SpringMVC概述 Spring的web框架围绕DispatcherServlet设计. DispatcherServlet的作用是将请求分发到不同的处理器. Spring的web框架包括可配置的 ...
- LeetCode——LRU Cache
Description: Design and implement a data structure for Least Recently Used (LRU) cache. It should su ...
- 使用Kibana 分析Nginx 日志并在 Dashboard上展示
一.Kibana之Visualize 功能 在首页上Visualize 标签页用来设计可视化图形.你可以保存之前在discovery中的搜索来进行画图,然后保存该visualize,或者加载合并到 d ...
- [Tool] PLSQL使用技巧
1.PL/SQL Developer保存自定义界面布局 Tools->Preferences->User Interface->Options->Autosave deskto ...
- WCF 4.0 使用说明
WCF 4.0开发说明,工具VS2013 ,IIS,使用http协议 打开VS2013,新建项目Visual C#>Web>Asp.NET Web应用程序,添加相关引用: System.S ...
- php Calender(日历)代码
代码如下: <?php /** * * 我的日历 * date_default_timezone_set date mktime * @param int $year * @param int ...
- java数据库查询类
通用查询数据库辅助类,可实现任意查询语句的查询,还可以进行多结果集查询. 类的代码: package com.hongyuan.db; import java.math.BigDecimal; imp ...
- 你可以做一个更好的Coder为了自己的将来
小小的星辰 工作已经一年多了,时间真的好快啊!发现自己还是终于走出了当初的阴影!我可以快乐的做我自己了.这两年发现自己改变了很多!很庆幸,我可以不想你了!伤感的心情总会过去的.还记得曾经说过一句:“离 ...