我们在开发Android程序的时候,经常会遇到一些需要保存数据,以妨下次再用到这些数据。

如果不是有接触,我想大家应该比较容易想到的是,数据库(SQLite数据库)和文件存储。其实,在Android开发中,还有三种保存数据的方式,SharedPreferences存储、ContentProvider存储和Network存储。后两种,本篇博客不做详细介绍。

SharedPreferences保存的数据主要是类似配置信息格式的数据,因此它保存的数据主要是简单类型的key-value对。从用法角度来看,SharedPreferences和SharedPreferences.Editor组合起来非常像Map,SharedPreferences负责根据key读取数据,而SharedPreferences.Editor则用写入数据。

SharedPreferences的API超连接。。。。。。。。

SharedPreferences.Editor的API超连接。。。。。。

这里还有一个小问题要大家注意。那就是SharedPreferences存储数据时,只能保存一组数据。它可能有多个key-value对,不过不管它是怎么的多,都只能是一组数据。下面我就给出一个注册和登录小Demo中的关键代码来更好的说明一下。

注册(写入数据):

public class RegistrationUI extends Activity {private String TAG = "RegistrationUI";SharedPreferences preferences;SharedPreferences.Editor editer;private EditText userNameEditTxt;private EditText userPwEditTxt1;private EditText userPwEditTxt2;private Button ok;private Button cancel;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.registration);preferences = getSharedPreferences("myinfo", MODE_WORLD_READABLE);editer = preferences.edit();userNameEditTxt = (EditText) findViewById(R.id.reg_userNameEditTxt);userPwEditTxt1 = (EditText) findViewById(R.id.reg_userPwEditTxt1);userPwEditTxt2 = (EditText) findViewById(R.id.reg_userPwEditTxt2);ok = (Button) findViewById(R.id.determineBn);cancel = (Button) findViewById(R.id.cancelBn);ok.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubSimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日" + "hh:mm:ss");editer.putString("date_and_time", sdf.format(new Date()));String name = userNameEditTxt.getText().toString();String password1 = userPwEditTxt1.getText().toString();String password2 = userPwEditTxt2.getText().toString();if (password1.equals(password2)){editer.putString("userName", name);editer.putString("userPw", password1);editer.commit();}else{Toast.makeText(RegistrationUI.this, "前后两次输入的密码不一致,请重新输入。。。", Toast.LENGTH_SHORT);}}});cancel.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub}});}
}

登录(读取数据):

public class LoginUI extends Activity {SharedPreferences preferences;SharedPreferences.Editor editer;private EditText userName;private EditText userPw;private Button loginBn;private Button cancelBn;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.login);preferences = getSharedPreferences("myinfo", MODE_WORLD_READABLE);userName = (EditText) findViewById(R.id.login_userNameEditTxt);userPw = (EditText) findViewById(R.id.login_userPwEditTxt);loginBn = (Button) findViewById(R.id.login_determineBn);cancelBn = (Button) findViewById(R.id.login_cancelBn);loginBn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubString userName_DB = preferences.getString("userName", null);String userPw_DB = preferences.getString("userPw", null);if (userName_DB.equals(userName.getText().toString()) && userPw_DB.equals(userPw.getText().toString())){Toast.makeText(LoginUI.this, "登录成功!", Toast.LENGTH_LONG).show();}else{Toast.makeText(LoginUI.this, "用户名或密码用误,请重新登录。", Toast.LENGTH_LONG).show();}}});}
}

在这个例子中,大家可以看到,你在注册时填写的用户名和密码被保存到SharedPreferences中之后,我就可以用这个注册的用户名和密码来登录了。不过,要是用这个来实现注册和登录,只能是单用户的,因为上一次注册的账号会被下一次注册给覆盖掉。也就是说一台机子,一个程序只能跑一个用户。这样太不合理。所以这种存储数据的方式只能是保存一些配置信息(如是否打开音效,是否使用振动效果,小游戏的玩家积分等等)

这里也给出,我上传在CSDN上的程序源码:点击打开源码链接

Android中SharedPreferences与Editor的使用相关推荐

  1. Android 中SharedPreferences 使用

    Android 中SharedPreferences使用 一.SharedPreferences使用1 protected void onCreate(Bundle savedInstanceStat ...

  2. android中sharedPreferences的用法

    SharedPreferences介绍: 做软件开发应该都知道,很多软件会有配置文件,里面存放这程序运行当中的各个属性值,由于其配置信息并不多,如果采用数据库来存放并不划算,因为数据库连接跟操作等耗时 ...

  3. android sharedpreferences 存储对象,android中SharedPreferences实现存储用户名功能

    1. 简介 SharedPreferences是一种轻型的数据存储方式,通过key-value键值对的方式将数据存储在xml文件中,常用于存储简单的配置信息. 2. 使用方式 2.1 获取Shared ...

  4. android中SharedPreferences和PreferenceActivity的存取数据

    本文主要介绍SharedPreferences和PreferenceActivity的基础知识和用法. 主要资料来源于网络,包括但不限于: <Android之PreferenceActivity ...

  5. Android中Sharedpreferences牵涉到跨进程时不能实时读取的问题

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/11271053 在做课程表应用时,由于要设置课前提醒的时间,我通过Sharedprefere ...

  6. Android中网络编程出错

    在android 2.3上设计的下载程序,在android 4.0上运行时报android.os.NetworkOnMainThreadException异常,原来在4.0中,访问网络不能在主程序中进 ...

  7. android中注册的账号密码储存在,Android中使用SharedPreferences完成记住账号密码的功能...

    效果图: 记住密码后,再次登录就会出现账号密码,否则没有. 分析: SharedPreferences可将数据存储到本地的配置文件中 SharedPreferences会记录CheckBox的状态,如 ...

  8. android中注册的账号密码储存在,android SharedPreferences实现用户的注册和保存账号密码...

    在android开发中,我们做用户登录和注册的时候需要将用户名和密码保存,下次打开的时候记住应户名和密码.关于注册保存用户密码的方式和记住用户名和密码的保存方式有多种,这里介绍SharaedPrefe ...

  9. 深入剖析Android中最简单的数据存储方式:SharedPreferences

    目录 一. 使用SharedPreferences存储数据 二. 数据的存储位置和格式 三.存储数据的获取 四. 存取复杂类型的数据 五. 设置数据文件的访问权限 Hello,你好呀,我是灰小猿,一个 ...

最新文章

  1. 【JavaScript总结】JavaScript语法基础:BOM
  2. 嵌入式移植NTP(Network Time Protocol)
  3. (管道| / 重定向 / xargs)/find 与xargs结合使用/vi,grep,sed,awk(支持正则表达式的工具程序)
  4. linux shell 脚本 延时,linux下定时任务和延迟任务
  5. ASP.NET MVC 重点教程一周年版 第九回 HtmlHelper
  6. 硬件:断路器、接触器、继电器基础知识
  7. 解决安装Tuxera NTFS For Mac后依旧无法写入的问题
  8. 系统架构师学习笔记-面向对象方法
  9. 错误票据java_【蓝桥杯】错误票据 - osc_bskh1wlw的个人空间 - OSCHINA - 中文开源技术交流社区...
  10. Spring教程– Spring Core Framework教程
  11. 【TSP】基于matlab GUI免疫算法结合蚁群算法求解旅行商问题【含Matlab源码 1910期】
  12. 五大常用算法(一) - 分治算法
  13. EasyAR初学者教程
  14. Python中文分词库jieba用法代码示例
  15. java 中英日期转换器_Java SimpleDateFormat中英文时间格式化转换详解
  16. 欧氏空间距离和内积_欧式空间、内积空间和赋范空间之间的关系
  17. 联想拯救者R720重装Win10系统的正确姿势
  18. Elasticsearch搜索引擎一些参数含义和用法
  19. 服务器系统控制台怎么打开,云服务器控制台怎么打开
  20. mysql三个分组排序方法row_number()、rank()、dense_rank()

热门文章

  1. C++ Primer 5th笔记(chap 12 动态内存)shared_ptr
  2. 软件质量保证与测试——Smoke Test
  3. 操作系统实验——简易FAT16文件系统的实现
  4. 并发安全Context包的使用
  5. CA/TA通信的share memory设计思想解读
  6. mk_trustonic.mk编译脚本
  7. [思考]-ARM LR寄存器的思考
  8. 基于移位寄存器的序列密码
  9. 微程序控制器原理(增量方式和断定方式结合法)
  10. Python爬取淘宝商品价格销量信息